home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
hk
/
bassrc
/
hk4anly.bas
< prev
next >
Wrap
BASIC Source File
|
1993-07-08
|
68KB
|
1,797 lines
10 '------------------------------------------------------------------
20 ' HK4ANLY.BAS Copyrigit(C) T.Komura / 家計簿システム /
30 ' / Version 4 /
31 ' Version 4.0 1992.08.04-1992.09.14 / 分析プログラム /
32 ' 4.0a 1992.10.11 エンゲル係数基数を収入計から支出計に修正
100 '------------------------------------------------------------------
165 DIM CFI$(15)
170 GOSUB *CONFIGファイルチェック
190 '
193 VERN$="1.0" 'バージョンNo.
200 *初期設定:'--------------------------------------------------------
210 CMD$="CD "+PRGDRV$:SHELL CMD$
220 SCREEN@ 0 :COLOR 7,0,0,4:CLS:CONSOLE 5,17,2:MOUSE 0
230 DIM MSGD%(28000):' 音声メッセージ配列定義 プログラム先頭で定義
235 DIM L_W$(80)
240 LOAD@ FMBDRV$+"\FMP.FMB"
250 PLAY "@30T150V4":DATX$=DATE$
260 DIM XB1(3,30),XB2(3,30),YB1(3,30),YB2(3,30),BST(3,30)
270 DIM ITEM$(20),ITEMC(20),SMOPT(10,3),MESH$(20),IMSH(15)
280 DIM MX$(20),MX#(20),DYN$(18),DYN#(18),DRM$(16),GDT#(6,31)
290 DIM GDYY(31*12),GDYM$(31*12),GDYE$(31*12)
300 INTERVAL 1 :'プログラム先頭
310 ON INTERVAL GOSUB *時計表示 :'プログラム先頭
320 GOSUB *ボタン座標読み取り
325 GOSUB *分析モード読み取り
330 GOSUB *メッシュデータ定義
340 'CLS:COLOR 7:PRINT int((int(((557-208+1)+7)/8)*(333-125+1)*4+8-1)/8)
350 DIM CUTN#(795),ANLS#(4598),SUBW#(664),ANLW#(13065)
370 ON ERROR GOTO *ERROR
980 '
1000 *メインルーチン:'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
1005 GOSUB *表紙表示
1010 MESN=18:GOSUB *SNDMSG
1015 MESN=1:GOSUB *MESDSP
1020 GOSUB *本日の日付
1030 SMODC=7:GOSUB *分析モード表示
1040 MOUSE 1,320,64,1
1100 *メイン選択
1110 IF MES2OFF=0 THEN MESN=2:GOSUB *MESDSP
1130 SWPASS=0:G=1:GOSUB *マウスボタン選択
1150 ON SWNO GOTO *S01,*S02,*S03,*S04,*S05,*S06
1160 GOTO 1100:STOP
1190 '
1200 *S01:'モード変更 --------------------------------------------------
1210 MODDEF=-1:GOTO *MODECHG
1220 *S02:'モード変更 --------------------------------------------------
1230 MODDEF=+1:GOTO *MODECHG
1250 *MODECHG
1260 G=1:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
1265 IF SMODSEL=1 THEN MES2OFF=1:GOTO 1320
1270 SMODE=SMODE+MODDEF
1280 IF SMODE>MODEN THEN SMODE=1:GOTO 1300
1290 IF SMODE<1 THEN SMODE=MODEN:GOTO 1300
1300 ANLF=0:SMODC=7:GOSUB *分析モード表示
1310 MES2OFF=0
1320 G=1:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
1330 GOTO *メイン選択
1340 '
1500 *S03:'モード選択 ---------------------------------------------------
1510 G=1:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
1520 SMODSEL=1:SMODC=4:GOSUB *分析モード表示
1530 'PUT@A(88,90)-(215,172),SUBW#
1550 IF SMODE=9 THEN 1610
1560 CDTSET=0:GOSUB *分析条件設定
1570 IF ANLCAN=0 THEN 1600
1575 SMODSEL=0:SMODC=7:GOSUB *分析モード表示
1580 MES2OFF=0:GOTO 1625
1590 '
1600 GOSUB *分析結果画面消去
1605 GOSUB *分析条件表示:CDTSET=1
1610 MESN=13:GOSUB *MESDSP:MESN=16:GOSUB *SNDMSG
1620 MES2OFF=1
1625 G=1:B=3:BST(G,B)=0:GOSUB *ボタンON_OFF表示
1630 GOTO *メイン選択
1690 '
1700 *S05:'取消 ---------------------------------------------------------
1710 G=1:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
1720 IF SMODSEL=1 THEN 1750
1730 MESN=14:GOSUB *MESDSP:MESN=12:GOSUB *SNDMSG
1740 FOR II=1 TO 5000:NEXT II:GOTO 1760
1750 GOSUB *分析条件消去:SMODSEL=0
1751 ANLF=0
1755 SMODC=7:GOSUB *分析モード表示
1760 MES2OFF=0
1770 G=1:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
1780 GOTO *メイン選択
1790 '
1920 '
2000 *S04:'実行 --------------------------------------------------------
2010 G=1:B=4:BST(G,B)=1:GOSUB *ボタンON_OFF表示
2020 IF SMODSEL=1 THEN 2100
2030 MESN=14:GOSUB *MESDSP:MESN=12:GOSUB *SNDMSG
2040 FOR II=1 TO 5000:NEXT II:MES2OFF=0:GOTO 2470
2090 '
2100 ON SMODE GOSUB *AN01,*AN02,*AN03,*AN04,*AN05, *AN06,*AN07,*AN08,*AN09
2110 IF SMODE=3 THEN 2236
2120 MESN=14:GOSUB *SNDMSG
2236 ANLF=1:SMODC=7:GOSUB *分析モード表示
2240 MES2OFF=0
2460 SMODSEL=0
2470 G=1:B=4:BST(G,B)=0:GOSUB *ボタンON_OFF表示
2480 GOTO *メイン選択
2490 '
8940 '
9000 *S06:'終了・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
9020 G=1:B=6:BST(G,B)=1:GOSUB *ボタンON_OFF表示
9060 '
9110 MESN=9:GOSUB *MESDSP:MESN=24:GOSUB *SNDMSG
9130 INTERVAL OFF
9140 CHAIN "HK4MAIN.BAS"
9150 STOP:SYSTEM
9160 '
9900 '-------------------------------------------------------------------
9910 ' GENERAL SUB ROUTINE
9920 '-------------------------------------------------------------------
10000 *CHR1IN:'////////// 1文字入力
10010 A$=INKEY$:IF A$="" THEN 10010
10020 A=INSTR(C$,A$)
10030 IF A=0 THEN MESN=13:GOSUB *SNDMSG:GOTO 10010
10040 RETURN
10050 '
10060 '
10070 *MESDSP:'////////// メッセージ表示
10080 RESTORE *MESDAT
10090 FOR IM=1 TO MESN:READ XM,YM,CM,CB,BM,MES$:NEXT IM
10100 LOCATE 0,YM:COLOR CB,CB:PRINT SPACE$(79);
10110 LOCATE XM,YM:COLOR CM,CB:PRINT MES$;
10120 'IF BM=1 THEN PLAY "L4O4A"
10130 RETURN
10140 '
10200 *MESDAT:'////////// メッセージデータ
10205 ' XM, YN, CM, CB, BM
10210 DATA 2, 23, 5, 0, 1 :'--- 01
10215 DATA " - HK version 4.0 - 分析 [HKANLY.BAS L10]"
10220 DATA 2, 23, 7, 0, 0 :'--- 02
10225 DATA "分析モードを[▲][▼]ボタンで選んで[SELECT]を押してください。"
10230 DATA 2, 23, 7, 0, 0 :'--- 03
10235 DATA "●印の分析条件を設定してください。"
10240 DATA 2, 23, 4, 0, 1 :'--- 04
10245 DATA "★分析条件ファイル読み込み中 !!"
10250 DATA 2, 23, 4, 0, 1 :'--- 05
10255 DATA "★分析条件ファイル保存中 !!"
10260 DATA 2, 23, 6, 0, 1 :'--- 06
10265 DATA "この分析モードでは、指定した分析条件は無効です。"
10270 DATA 2, 23, 6, 0, 0 :'--- 07
10275 DATA "分析開始年月が分析終了年月よりも大きくなっています。 訂正してください。"
10280 DATA 2, 23, 6, 0, 0 :'--- 08
10285 DATA "分析終了年月をもう少し小さく設定してください。"
10290 DATA 2, 23, 5, 0, 1 :'--- 09
10295 DATA " ★★★しばらくお待ちください....."
10300 DATA 2, 23, 6, 0, 0 :'--- 10
10305 DATA "この分析モードでは、指定した分析項目は無効です。分析項目を選択し直して下さい。"
10310 DATA 2, 23, 6, 0, 0 :'--- 11
10315 DATA "分析項目が指定されていません。 分析項目を選んでください。"
10320 DATA 2, 23, 7, 0, 0 :'--- 12
10325 DATA "分析条件ファイルを保存しますか? 保存する--[OK] 保存しない--[NG]"
10330 DATA 2, 23, 7, 0, 1 :'--- 13
10335 DATA "分析条件を確認して[実行]ボタンを押してください。"
10340 DATA 2, 23, 6, 0, 1 :'--- 14
10345 DATA "分析モードを選んでください。"
10350 DATA 2, 23, 6, 0, 1 :'--- 15
10355 DATA "分析開始年月の家計簿ファイルがありません。"
10360 DATA 2, 23, 6, 0, 1 :'--- 16
10365 DATA "分析終了年月の家計簿ファイルがありません。"
10370 DATA 2, 23, 4, 0, 1 :'--- 17
10375 DATA "★分析実行中!! しばらくお待ちください。"
10380 DATA 2, 23, 6, 0, 1 :'--- 18
10385 DATA "分析の結果該当するデータが有りませんでした。"
10390 DATA 2, 23, 7, 0, 1 :'--- 19
10395 DATA "分析終了! [▲前頁][▼次頁]で頁切替え。 [取消]で分析終了。"
10400 DATA 2, 23, 4, 0, 1 :'--- 20
10405 DATA "★統計演算処理実行中! しばらくお待ちください。"
10410 DATA 2, 23, 7, 0, 1 :'--- 21
10415 DATA "マウスで内容を見たい日付のグラフ(白い点)をクリックしてください。 終了:[取消]"
10990 '
11000 *SNDMSG:' SAVE "SNDMSG.SUB",A
11005 IF SNDMF=0 THEN RETURN
11010 '・・・・・・・・・・・・・・・・・ サウンドメッセージ実行サブルーチン 1989.02.04
11020 ' 入力=MESN (メッセージNo.)
11030 '
11070 IF MESN>36 THEN *RETURN_SNDMSG
11080 RESTORE *MSGNAM
11090 FOR IMSG=1 TO MESN
11100 READ MSGD$
11110 NEXT IMSG
11120 MSGFN$=SNDDRV$+"\"+MSGD$+"_F.SND"
11130 LOAD@ MSGFN$,MSGD%
11140 PCMPLAY MSGD%
11150 *RETURN_SNDMSG :WAIT SWAIT:RETURN
11160 *MSGNAM :'////////// .SND File Name Data
11170 DATA "OHA1" :' 1 おはよう
11180 DATA "KONN" :' 2 こんにちわ
11190 DATA "KONBAN" :' 3 こんばんわ
11200 DATA "GOKRO1" :' 4 ごくろうさん
11210 DATA "GOKRO2" :' 5 ごくろうさま
11220 DATA "OTUKA" :' 6 お疲れさま
11230 DATA "OMATA" :' 7 おまたせ
11240 DATA "ARIGA2" :' 8 ありがとう
11250 DATA "RUNRUN" :' 9 るんるん
11260 DATA "DAMEDE" :' 10 だめでしょう
11270 DATA "IIDE1" :' 11 いいですか
11280 DATA "NANISI" :' 12 なにしてるの
11290 DATA "DAMEDA" :' 13 だめだめ
11300 DATA "OWARI" :' 14 終わりました
11310 DATA "SIBA" :' 15 しばらくお待ち下さい
11320 DATA "YOROSI" :' 16 よろしいですか
11330 DATA "TYANTO" :' 17 ちゃんとしなさい
11340 DATA "ERANDE" :' 18 選んでください
11350 DATA "KAKNIN" :' 19 確認して下さい
11360 DATA "NYURYO" :' 20 入力してください
11370 DATA "IRA" :' 21 いらっしゃいませ
11380 DATA "OYASUM" :' 22 おやすみ
11390 DATA "ARIGA3" :' 23 ありがとうございました
11400 DATA "TYOTO" :' 24 ちょっと待って
11410 DATA "OOKINA" :' 25 大きな間違い
11420 DATA "YAMETE" :' 26 やめて
11430 DATA "TIGAU" :' 27 ちがうよ
11440 DATA "PINPON" :' 28 ぴんぽーん
11450 DATA "BUU" :' 29 ぶー
11460 DATA "MOUII" :' 30 もういいよう
11470 DATA "DEKITA" :' 31 できたよー
11480 DATA "IIDE2" :' 32 いいですか(2)
11490 DATA "YOSI" :' 33 よしなさい
11500 DATA "OYOSI" :' 34 およしなさい
11510 DATA "YAMENA" :' 35 やめなさい
11520 DATA "GOMEN" :' 36 ごめん
11530 '
12000 '////////// 年月日入力 & 曜日表示
12010 '
12015 *週分析E
12020 DATA "SUN",2,"MON",0,"TUE",0,"WED",0,"THU",0,"FRI",0,"SAT",1
12025 GOSUB *WEEKN:RESTORE 12020:FOR IW=0 TO WK:READ WKM$,CW:NEXT IW
12030 RETURN
12045 *週分析
12050 DATA "日",2,"月",0,"火",0,"水",0,"木",0,"金",0,"土",5
12060 GOSUB *WEEKN:RESTORE 12050:FOR IW=0 TO WK:READ WKM$,CW:NEXT IW
12080 RETURN
12090 '
12100 *YMDIN ' V2.0 1991.07.21
12110 LX=XYMD:LY=YYMD:LC=CYMD:LL=4:LM$=INYR$
12120 LOCATE LX,LY:COLOR BYMD:PRINT " 年 月 日";
12130 LOCATE LX,LY:COLOR CYMD:PRINT LM$:GOSUB *LKEYIN: INYR$=LMG$
12140 LOCATE LX,LY:COLOR AYMD:PRINT LMG$
12145 YR=VAL(INYR$)
12150 LX=XYMD+7:LY=YYMD:LC=CYMD:LL=2:LM$=INMN$
12160 LOCATE LX,LY:COLOR CYMD:PRINT LM$:GOSUB *LKEYIN: INMN$=LMG$
12170 LOCATE LX,LY:COLOR AYMD:PRINT LMG$
12175 MN=VAL(INMN$):IF MN<1 OR MN>12 THEN BEEP:GOTO 12160
12180 LX=XYMD+11:LY=YYMD:LC=CYMD:LL=2:LM$=INDY$
12190 LOCATE LX,LY:COLOR CYMD:PRINT LM$:GOSUB *LKEYIN: INDY$=LMG$
12200 LOCATE LX,LY:COLOR AYMD:PRINT LMG$
12205 DY=VAL(INDY$):IF DY<1 OR DY>31 THEN BEEP:GOTO 12190
12210 RETURN
12220 '
12450 *WEEKN :'////////// 週NO.分析
12460 U=0 :'・・・・・・・・・・・・・・・・・・・・・・・・ Input; YR MN Output; WK DN
12470 IF YR/4-INT(YR/4)=0 THEN U=1
12480 DATA 31,28,31,30,31,30,31,31,30,31,30,31
12490 DATA 31,29,31,30,31,30,31,31,30,31,30,31
12500 IF U=0 THEN RESTORE 12480 ELSE RESTORE 12490
12505 IF MN=1 THEN MDN=0:MNDN=31:GOTO 12520
12510 MDN=0:FOR IWEKN=1 TO MN-1:READ DN:MDN=MDN+DN:NEXT IWEKN
12515 READ MNDN:'当月の日数
12520 YDN#=MDN+YR*365+INT((YR+3)/4)+5+DY-1
12530 WK=(YDN#/7-INT(YDN#/7))*7
12540 RETURN
13000 ' 1993.02.12 T.Komura
13010 *LKEYIN :'・・・・・・・・・・・ 1 行全角文字入力サブルーチン
13020 ' v1.1a 入力 = LX,LY : 表示開始座標 出力 = LMG$ : 入力後の文字列
13030 ' LM$ : 初期文字列
13040 ' LC : 表示文字色
13050 ' LL : 最大文字数
13060 '
13070 LCSRCL=2:LLINCL=6
13080 ' CR MR ML INS DEL BS CAN
13085 LMSX=MOUSE(0):LMSY=MOUSE(1):MOUSE 5 :'v1.1a
13090 CC$=CHR$(&H0D,&H1C,&H1D,&H12,&H7F,&H08,&H18)
13100 LMG$=SPACE$(LL):LMGD$=SPACE$(LL)
13110 LA$=INKEY$:IF LA$<>"" THEN 13110
13120 LCSR=0:LCSRX=LCSR:GOSUB *LCSRDX
13130 LOCATE LX,LY:COLOR LC:PRINT LM$ ' ・・・・・・・・・・ 初期文字列記憶
13140 LINE(LX*8,LY*19+16)-((LX+LL)*8,LY*19+17),XOR,LLINCL,BF
13150 LMX$=LEFT$(LM$+SPACE$(LL),LL)
13160 GOSUB *LMREAD
13170 *IN1C:' ・・・・・・・・・・ 1 文字入力
13180 LA$=INKEY$:IF LA$="" THEN 13180
13190 ALA=ASC(LA$):CLA=INSTR(CC$,LA$)
13200 IF CLA=0 THEN 13220
13210 ON CLA GOTO *CR,*MR,*ML,*INS,*DEL,*BS,*CAN
13220 IF KANF=1 THEN *KANJI
13230 IF ALA<&H20 THEN BEEP:GOTO *IN1C
13240 IF ALA>=&H20 AND ALA<&H80 THEN *ANK
13250 IF ALA>=&HA0 AND ALA<&HE0 THEN *ANK
13260 GOTO *KANJI
13270 *ANK :' ・・・・・・・・・・ ANK 文字入力
13280 LOCATE LX+LCSR,LY:COLOR LC:PRINT LA$
13290 MID$(LMX$,LCSR+1,1)=LA$
13300 GOSUB *LCSRINC:GOTO *IN1C
13310 *KANJI :' ・・・・・・・・・・ 漢字文字入力
13320 ON KANF+1 GOTO 13330,13360
13330 KANF=1:KANW$="":KANW$=LA$
13340 IF LCSR+1>=LL THEN KANF=0:BEEP
13350 GOSUB *LCSRD:GOTO *IN1C
13360 KANF=0:KANW$=KANW$+LA$
13370 LOCATE LX+LCSR,LY:COLOR LC:PRINT KANW$
13380 MID$(LMX$,LCSR+1,2)=KANW$
13390 GOSUB *LCSR2INC:GOTO *IN1C
13400 *CR :GOSUB *LMREAD :GOSUB *LCSRDX '////////// End
13410 LINE(LX*8,LY*19+16)-((LX+LL)*8,LY*19+17),XOR,LLINCL,BF
13415 MOUSE 0: MOUSE 1,LMSX,LMSY,1 :'v1.1a
13420 RETURN:'----------------------------------------------------------
13430 *MR :GOSUB *LCSRINC '////////// Right
13440 GOTO *IN1C
13450 *ML :GOSUB *LCSRDEC '////////// Left
13460 GOTO *IN1C
13470 *INS:GOSUB *LMREAD '////////// Insert
13480 IF LMGF$="2" THEN BEEP:GOTO *IN1C
13490 LMX$=LEFT$(LMG$,LCSR)+" "+MID$(LMG$,LCSR+1,LL-1-LCSR)
13500 GOSUB *LMXDSP
13510 GOTO *IN1C
13520 *DEL:GOSUB *LMREAD '////////// Delete
13530 IF LMGF$="2" THEN BEEP:GOTO *IN1C
13540 IF LMGF$="1" THEN 13560
13550 LMX$=LEFT$(LMG$,LCSR)+MID$(LMG$,LCSR+2,LL-1-LCSR)+" ":GOTO 13570
13560 LMX$=LEFT$(LMG$,LCSR)+MID$(LMG$,LCSR+3,LL-2-LCSR)+" "
13570 GOSUB *LMREAD
13580 GOSUB *LMXDSP:GOTO *IN1C
13590 *BS :GOSUB *LMREAD '////////// BackSpace
13600 IF LCSR=0 THEN BEEP:GOTO *IN1C
13610 IF LMGF$="2" THEN BEEP:GOTO *IN1C
13620 GOSUB *LCSRDEC:GOSUB *LMREAD:LMGFX$=LMGF$
13630 LMX$=LEFT$(LMG$,LCSR)+MID$(LMG$,LCSR+2,LL-1-LCSR)+" "
13640 IF LMGFX$="2" THEN LMGFX$="0":GOSUB *LMREAD:GOTO 13620
13650 GOSUB *LMXDSP
13660 GOTO *IN1C
13670 *CAN :LMX$=SPACE$(LL) '////////// Clear
13680 GOSUB *LMXDSP:LCSR=0:GOSUB *LCSRD
13690 GOSUB *LMREAD:GOTO *IN1C
13700 *LMREAD: '////////// Disp Char Read
13710 LMDX=0:LMGD$=""
13720 FOR II=1 TO LL
13730 LMG=ASC(MID$(LMX$,II,1))
13740 IF (LMG>=&H80) AND (LMG<&HA0) THEN LMDK=1 ELSE LMDK=0
13750 IF LMDX=1 THEN LMD$="2":LMDX=0:GOTO 13780
13760 IF LMDK=1 AND LMDX=0 THEN LMD$="1":LMDX=1:GOTO 13780
13770 IF LMDK=0 THEN LMD$="0":LMDX=0
13780 LMGD$=LMGD$+LMD$
13790 NEXT II:LMGF$=MID$(LMGD$,LCSR+1,1):LMG$=LMX$
13800 RETURN
13810 *LCSRD :LXC=8*(LX+LCSR) :LYC=LY*19:GOSUB 13840: '//// Csr Disp
13820 *LCSRDX:LXC=8*(LX+LCSRX):LYC=LY*19:GOSUB 13840: '//// Csr Erace
13830 LCSRX=LCSR:RETURN
13840 LINE(LXC,LYC+0)-(LXC+1,LYC+14),XOR,LCSRCL,BF:RETURN
13850 *LCSRINC :LCSR=LCSR+1:IF LCSR>=LL THEN LCSR=LL-1
13860 GOSUB *LCSRD:RETURN
13870 *LCSR2INC:LCSR=LCSR+2:IF LCSR>=LL THEN LCSR=LL-2
13880 GOSUB *LCSRD:RETURN
13890 *LCSRDEC :LCSR=LCSR-1:IF LCSR<0 THEN LCSR=0
13900 GOSUB *LCSRD:RETURN
13910 *LMXDSP:LOCATE LX,LY:COLOR LC:PRINT LMX$;:RETURN
15000 '
15010 ' SAVE"TCLOCK.sub" :' 組み込み型 アナログ時計 V1.1
15020 ' 1991.05 T.KOMURA
15030 '--------------------------------------------------------------------
15040 '
15220 *時計表示:'///////////////////////////////////
15230 XCLK0=572:YCLK0=22:CLKR=16:PI=3.1415!
15240 TIMEX$=TIME$:IF DATE$<>DATX$ THEN GOSUB *本日の日付
15250 TSC$=MID$(TIMEX$,7,2):SCR=2*PI*(VAL(TSC$)/60)
15260 TMN$=MID$(TIMEX$,4,2):MNR=2*PI*(VAL(TMN$)/60)
15270 THR$=LEFT$(TIMEX$,2) :HRR=2*PI*((VAL(THR$)*60+VAL(TMN$))/720)
15280 GOSUB *短針表示
15290 GOSUB *長針表示
15300 GOSUB *秒針表示
15310 CLOCKINIT=1:DATX$=DATE$
15320 RETURN
15330 '
15340 *短針表示
15350 XHD1=XCLK0+(CLKR-8)*SIN(HRR):XHD2=XCLK0
15360 YHD1=YCLK0-(CLKR-8)*COS(HRR):YHD2=YCLK0
15370 IF CLOCKINIT=0 THEN 15400
15380 IF SCR<>0 THEN 15420
15390 LINE(XHD1X,YHD1X)-(XHD2X,YHD2X),XOR,6
15400 LINE(XHD1 ,YHD1 )-(XHD2 ,YHD2 ),XOR,6
15410 XHD1X=XHD1:YHD1X=YHD1:XHD2X=XHD2:YHD2X=YHD2
15420 RETURN
15430 *長針表示
15440 XMD1=XCLK0+(CLKR-2)*SIN(MNR):XMD2=XCLK0
15450 YMD1=YCLK0-(CLKR-2)*COS(MNR):YMD2=YCLK0
15460 IF CLOCKINIT=0 THEN 15490
15470 IF SCR<>0 THEN 15510
15480 LINE(XMD1X,YMD1X)-(XMD2X,YMD2X),XOR,7
15490 LINE(XMD1 ,YMD1 )-(XMD2 ,YMD2 ),XOR,7
15500 XMD1X=XMD1:YMD1X=YMD1:XMD2X=XMD2:YMD2X=YMD2
15510 RETURN
15520 *秒針表示
15530 XSD1=XCLK0+(CLKR)*SIN(SCR):XSD2=XCLK0:'+(CLKR-10)*SIN(SCR)
15540 YSD1=YCLK0-(CLKR)*COS(SCR):YSD2=YCLK0:'-(CLKR-10)*COS(SCR)
15550 IF CLOCKINIT=0 THEN 15570
15560 LINE(XSD1X,YSD1X)-(XSD2X,YSD2X),XOR,4
15570 LINE(XSD1 ,YSD1 )-(XSD2 ,YSD2 ),XOR,4
15580 XSD1X=XSD1:YSD1X=YSD1:XSD2X=XSD2:YSD2X=YSD2
15590 RETURN
16000 '
19000 '
19010 '//////////////////////////////////////////////////////////////
19020 *ERROR:' エラー処理サブルーチン V1.10 1990.11.08 T.Komura
19030 '
19040 '
19050 IF ERR=53 THEN *IOERR
19060 IF ERR=63 THEN *FILNOF
19070 IF ERR=67 THEN *DSKFUL
19080 IF ERR=71 THEN *DSKUNF
19090 IF ERR=72 THEN *DSKOFF
19100 IF ERR=73 THEN *DSKWP
19110 ERMES$="エラー行:"+STR$(ERL)+" エラー番号:"+STR$(ERR)+" 発生"
19120 GOSUB *ERMSG
19130 STOP
19140 '////////// エラー処理
19150 *IOERR
19160 ERMES$="プリンターが準備されていません。 プリンターをセット後、"
19170 GOSUB *ERMSG:RESUME
19180 *DSKFUL
19190 ERMES$="ディスクが満杯です。 交換後、"
19200 GOSUB *ERMSG:RESUME
19210 *DSKUNF
19220 ERMES$="このディスクは使用出来ません。処理を中断します。 "
19230 GOSUB *ERMSG:RESUME
19240 *DSKOFF
19250 ERMES$="ディスク装置が準備されていません。ディスクをセット後、"
19260 GOSUB *ERMSG:RESUME
19270 *DSKWP
19280 ERMES$="ディスクが書き込み禁止になっています。解除後、"
19290 GOSUB *ERMSG:RESUME
19300 *FILNOF
19310 ERMES$="ファイルが見つかりません。ディスクを交換後、"
19320 GOSUB *ERMSG:RESUME
19330 '
19340 *ERMSG:'////////// エラーメッセージ
19345 XX=POS(0):YY=CSRLIN
19350 LOCATE 2,23:COLOR 2,0
19355 PRINT SPACE$(77);
19359 LOCATE 2,23:COLOR 2,0
19360 PRINT ERMES$;"[実行]キーを押してね!";
19370 COLOR 7,0:MESN=19:GOSUB *SNDMSG
19380 ERRA$=INKEY$:IF ERRA$="" THEN 19380
19390 IF ERRA$<>CHR$(&H0D) THEN 19380
19400 LOCATE 3,23:COLOR 6,0
19410 PRINT "エラー処理を終わります。";SPACE$(52);
19420 LOCATE XX,YY:RETURN
19430 '
19440 '
19450 '
20000 '------------------------------------------------------------------
20010 ' CUSTOM SUB ROUTINE FOR "HK4ANLY.BAS"
20020 '------------------------------------------------------------------
20100 *表紙表示
20140 LOAD@ TIFDRV$+"\HK4ANLY.TIF",(0,0)
20145 INTERVAL ON
20150 GET@A(88,90)-(215,172),SUBW#
20155 GET@A(10,90)-(628,424),ANLW#
20160 RETURN
20190 '
20200 *本日の日付
20210 TY$=LEFT$(DATE$,2) :TY=VAL(TY$)
20212 IF TY<90 THEN TY=TY+2000 ELSE TY=TY+1900
20214 TY$=RIGHT$(STR$(TY),4)
20220 TM$=MID$(DATE$,4,2):TM=VAL(TM$)
20230 TD$=RIGHT$(DATE$,2):TD=VAL(TD$)
20250 YR=TY:MN=TM:DY=TD:GOSUB *週分析:IF CW=0 THEN CW=7
20260 TYMD$=TY$+"年"+TM$+"月"+TD$+"日"+" 曜日"
20265 COLOR 7,0:LOCATE 46,1:PRINT TYMD$
20270 COLOR CW:LOCATE 61,1:PRINT WKM$
20280 RETURN
20290 '
20300 *分析年月表示
20310 SRYR$=RIGHT$(STR$(SRYR),4)
20315 NBN=4:NBA$=SRYR$:GOSUB *数字漢字変換:KYR$=NBK$
20320 SRMN$=RIGHT$(STR$(100+SRMN),2)
20325 NBN=2:NBA$=SRMN$:GOSUB *数字漢字変換:KMN$=NBK$
20350 DYMD$=KYR$+SPACE$(9)+KMN$
20360 COLOR 7,0:LOCATE 39,9+(ANLIN-1)*2:PRINT DYMD$;
20380 RETURN
20390 '
20400 *分析モード表示
20410 LOCATE 12,3:COLOR SMODC
20420 PRINT SMODE$(SMODE);
20430 ANLC$="\ANLC"+RIGHT$(STR$(SMODE+100),2)+".TIF"
20440 DRV$=LEFT$(TIFDRV$,2)
20445 IF LEN(TIFDRV$)=3 THEN DRV$=LEFT$(TIFDRV$,2):PATH$="":GOTO 20455
20450 PATH$=RIGHT$(TIFDRV$,LEN(TIFDRV$)-2)
20455 FLN$=DRV$+PATH$+ANLC$
20460 IF ANLF=1 THEN 20470
20465 LOAD@ FLN$,(88,90)
20470 RETURN
20480 '
20500 *分析結果画面消去
20510 FOR II=5 TO 21
20520 LOCATE 0,II:COLOR 7:PRINT SPACE$(79);
20530 NEXT II
20540 PUT@A(10,90)-(628,424),ANLW#
20550 RETURN
20590 '
20600 *年月変更
20610 MN=MN+MDEF
20620 IF MN<1 THEN MN=12+MN:YR=YR-1
20630 IF MN>12 THEN MN=MN-12:YR=YR+1
20640 YR=YR+YDEF
20650 IF YR<0 THEN YR=10000+YR
20660 IF YR>9999 THEN YR=YR-10000
20670 MN$=RIGHT$(STR$(100+MN),2)
20680 YR$=RIGHT$(STR$(10000+YR),4)
20690 RETURN
20695 '
20700 *分析条件枠表示
20710 GET@A(208,125)-(557,333),ANLS#
20720 LOAD@ TIFDRV$+"\HK4ANLS.TIF",(208,125)
20722 FOR II=1 TO 15:IF II>3 AND II<8 THEN C=1 ELSE C=0
20724 X=320+46*INT((II-1)/3):Y=250+17*((II-1) MOD 3)
20726 SYMBOL(X,Y),CFI$(II),.7!,.7!,C
20728 NEXT II
20730 FOR II=1 TO 3
20732 IF SMOPT(SMODE,II)=0 THEN 20738
20734 LOCATE 28,9+(II-1)*2:COLOR 3
20736 PRINT "●";
20738 NEXT II
20740 RETURN
20750 *分析条件枠消去
20760 FOR II=1 TO 5
20762 LOCATE 28,9+II-1:PRINT SPACE$(40);
20764 NEXT II
20770 PUT@A(208,125)-(557,333),ANLS#
20785 RETURN
20790 '
20800 *分析条件読み込み
20805 MESN=4:GOSUB *MESDSP
20810 GOSUB *ANLSGET
20820 SRYR=SR1YR:SRMN=SR1MN:ANLIN=1:GOSUB *分析年月表示
20825 YRS=SRYR:MNS=SRMN
20830 SRYR=SR2YR:SRMN=SR2MN:ANLIN=2:GOSUB *分析年月表示
20835 YRE=SRYR:MNE=SRMN
20870 SX8=0:SX8X=SX8:SX$(8)=SPACE$(2):SITM=0
20890 RETURN
20895 '
20900 *分析条件保存
20905 MESN=5:GOSUB *MESDSP
20910 GOSUB *ANLSPUT
20920 RETURN
20930 '
21000 *分析条件設定
21010 GOSUB *分析条件枠表示
21020 GOSUB *分析条件読み込み
21030 MESN=3:GOSUB *MESDSP:MESN=20:GOSUB *SNDMSG
21040 G=2:GOSUB *マウスボタン選択
21050 IF SWNO>10 THEN *ANLS項目選択
21060 ON SWNO GOTO *SI01,*SI02,*SI03,*SI04,*SI05,*SI06,*SI07,*SI08,*SI09,*SI10
21070 '//////////////////////////////////////////////////////////////
21080 *SI03:YDEF=+1:MDEF= 0:GOTO 21120
21090 *SI04:YDEF=-1:MDEF= 0:GOTO 21120
21100 *SI05:YDEF= 0:MDEF=+1:GOTO 21120
21110 *SI06:YDEF= 0:MDEF=-1:GOTO 21120
21120 G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
21130 ANLIN=1:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21170
21140 YR=SR1YR:MN=SR1MN:GOSUB *年月変更:SR1YR=YR:SR1MN=MN
21150 SX$(1)=YR$:SX$(2)=MN$:YRS=YR:MNS=MN
21160 SRYR=SR1YR:SRMN=SR1MN:GOSUB *分析年月表示
21170 G=2:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
21180 GOTO 21040
21190 *SI07:YDEF=+1:MDEF= 0:GOTO 21230
21200 *SI08:YDEF=-1:MDEF= 0:GOTO 21230
21210 *SI09:YDEF= 0:MDEF=+1:GOTO 21230
21220 *SI10:YDEF= 0:MDEF=-1:GOTO 21230
21230 G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
21240 ANLIN=2:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21280
21250 YR=SR2YR:MN=SR2MN:GOSUB *年月変更:SR2YR=YR:SR2MN=MN
21260 SX$(3)=YR$:SX$(4)=MN$:YRE=YR:MNE=MN
21270 SRYR=SR2YR:SRMN=SR2MN:GOSUB *分析年月表示
21280 G=2:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
21290 GOTO 21040
21300 *ANLS項目選択
21310 ANLIN=3:IF SMOPT(SMODE,ANLIN)=0 THEN GOSUB *SELERR:GOTO 21370
21320 SX8=SWNO:IF SX8X=0 THEN 21340
21330 G=2:B=SX8X:BST(G,B)=0:GOSUB *ボタンON_OFF表示
21340 G=2:B=SX8 :BST(G,B)=1:GOSUB *ボタンON_OFF表示
21350 SX8X=SX8:SITM=0
21360 SX$(8)=RIGHT$(STR$(SX8-10),2):SITM=VAL(SX$(8))
21370 GOTO 21040
21380 *SELERR
21390 MESN=6:GOSUB *MESDSP:MESN=13:GOSUB *SNDMSG
21400 FOR II=1 TO 5000:NEXT II
21410 MESN=3:GOSUB *MESDSP
21420 RETURN
21430 *SI01'
21440 G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
21450 GOSUB *分析条件合理性判定
21460 IF ANLCDF=0 THEN *SIRETRY
21470 GOTO *SIEND
21540 *SIRETRY
21550 G=2:B=SWNO:BST(G,B)=0:GOSUB *ボタンON_OFF表示
21560 GOTO 21040
21570 *SI02'
21580 G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
21590 ANLCAN=1
21620 GOTO 21660
21630 *SIEND
21640 ANLCAN=0
21650 GOSUB *分析条件保存
21660 GOSUB *分析条件枠消去
21670 RETURN
21730 '
21740 *分析条件表示
21742 PUT@A(88,90)-(215,172),SUBW#
21745 IF SMOPT(SMODE,3)=0 THEN 21760
21748 LINE(88,92)-(215,108),PSET,1,BF
21750 SYMBOL(90,94),"分析項目:",.8!,.8!,7,,,&H01+&H04,2
21755 SYMBOL(158,94),ITEM$(SITM),1,.8!,3,,,&H01+&H04,2
21760 IF SMOPT(SMODE,2)=0 THEN 21780
21770 ANLYM$=SX$(1)+"."+SX$(2)+" テ "+SX$(3)+"."+SX$(4):GOTO 21790
21780 ANLYM$=SX$(1)+"."+SX$(2)+" テ "+SX$(1)+"."+SX$(2)
21790 LOCATE 47,3:COLOR 4:PRINT ANLYM$;
21800 RETURN
21810 '
21820 *分析条件消去
21825 PUT@A(88,90)-(215,172),SUBW#
21830 LOCATE 47,3:PRINT SPACE$(30)
21840 RETURN
21850 '
21860 *分析年月日更新
21870 'IF SMODE=4 THEN ANLCNT=0:RETURN
21880 YR=YRM:MN=MNM:YDEF=0:MDEF=+1
21890 GOSUB *年月変更
21900 IF (YR*12+MN)<=(YRE*12+MNE) THEN 21920
21910 ANLCNT=0:RETURN
21920 IYM$=YR$+MN$
21930 ANLCNT=1
21940 RETURN
21950 '
22000 *AN01:'//////////////////// [月間合計額推移]
22010 X0=88:Y0=128:XP=44:YP=12
22011 MESH$=CHR$(&H70,&H70,&H70,&H70,&H07,&H07,&H07,&H07)
22021 FOR II=1 TO 23 STEP 2
22022 LINE(X0,Y0+YP*II)-(X0+XP*11,Y0+YP*(II+1)+1),PSET,0,BF,MESH$
22023 NEXT II
22024 FOR II=1 TO 10
22025 LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*24),PSET,5,,&HAAAA
22026 NEXT II
22027 LINE(X0,Y0)-(X0+XP*11,Y0),PSET,5
22028 LINE(X0,Y0)-(X0,Y0+YP*24),PSET,5
22030 SYMBOL(40,116),"年.月",1,.6!,5
22035 SYMBOL(578,116),"[\]",1,.6!,5
22100 '-------------------- データ読み込み
22105 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
22110 SCN=1:GOSUB *グラフデータ初期化
22120 IYM$=YRS$+MNS$:GDN=1
22125 GOSUB *ITM変換
22130 GOSUB *統計データ読みだし
22132 GDYM$=YRM$+"."+MNM$
22135 SYMBOL(X0-68,Y0+YP*(GDN-1)+2),GDYM$,1,.6!,7,,,,1
22140 IF FIDX=0 THEN 22160
22150 GDT#(1,GDN)=MX#(GITM)
22155 TGDT#=TGDT#+GDT#(1,GDN)
22160 GOSUB *分析年月日更新
22170 IF ANLCNT=0 THEN 22200
22180 GDN=GDN+1:GOTO 22130
22200 '-------------------- グラフ作成
22210 GDMAX=GDN
22220 GOSUB *スケール検出
22230 FOR II=0 TO 10 STEP 2
22232 SCAL$=LEFT$(STR$((SCAL#(1)/10)*II)+SPACE$(8),8)
22234 SYMBOL(X0+XP*II-6,Y0-10),SCAL$,.6!,.6!,7
22236 NEXT II
22238 MESH$=MESH$(13)
22240 FOR GDN=1 TO GDMAX
22250 XG=X0+(GDT#(1,GDN)/SCAL#(1))*XP*10
22260 LINE(X0,Y0+YP*GDN-10)-(XG,Y0+YP*GDN-1),PSET,0,BF,MESH$
22270 SYMBOL(XG,Y0+YP*GDN-10),STR$(GDT#(1,GDN)),.8!,.6!,6,,,&H02
22280 NEXT GDN
22290 LINE(216,92)-(364,108),PSET,7,BF
22300 SYMBOL(222,94),"総合計:\"+STR$(TGDT#),1,.8!,0,,,&H01
22470 GOSUB *画面フラッシュ
22480 RETURN
22490 '
22500 *AN02:'//////////////////// [月間合計額累積]
22510 X0=88:Y0=372:XP=20:YP=-24
22520 LINE(X0,Y0)-(X0+XP*24,Y0),PSET,5
22521 LINE(X0-12,Y0+8)-(X0+XP*24-12,Y0+8),PSET,5
22525 LINE(X0,Y0)-(X0,Y0+YP*10),PSET,5
22526 LINE(X0-12,Y0+8)-(X0-12,Y0+YP*10+8),PSET,5
22530 FOR II=1 TO 24
22532 LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*10),PSET,5,,&HCCCC
22533 LINE(X0+XP*II,Y0)-(X0+XP*II-12,Y0+8),PSET,5
22534 NEXT II
22536 FOR II=0 TO 10
22538 LINE(X0,Y0+YP*II)-(X0+XP*24,Y0+YP*II),PSET,5,,&HAAAA
22539 LINE(X0,Y0+YP*II)-(X0-12,Y0+YP*II+8),PSET,5
22540 NEXT II
22550 SYMBOL(24,108),"累積額[\]",.8!,.6!,7
22555 SYMBOL(40,96),"月額[\]",.8!,.6!,5
22560 SYMBOL(576,372),"年.月",.8!,.6!,5
22600 '-------------------- データ読み込み
22605 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
22610 SCN=2:GOSUB *グラフデータ初期化
22620 IYM$=YRS$+MNS$:GDN=1
22625 GOSUB *ITM変換
22630 GOSUB *統計データ読みだし
22632 GDYM$=YRM$+"."+MNM$
22633 XS=X0+XP*(GDN-1)-16:YS=Y0+((GDN-1) MOD 3)*12+10
22635 SYMBOL(XS,YS),GDYM$,.6!,.6!,7,,,,1
22640 IF FIDX=0 THEN 22660
22650 GDT#(1,GDN)=MX#(GITM)
22651 GDT#(2,GDN)=GDT#(2,GDN-1)+MX#(GITM)
22655 TGDT#=TGDT#+GDT#(1,GDN)
22660 GOSUB *分析年月日更新
22670 IF ANLCNT=0 THEN 22700
22680 GDN=GDN+1:GOTO 22630
22700 '-------------------- グラフ作成
22710 GDMAX=GDN
22720 GOSUB *スケール検出
22730 FOR II=0 TO 10 STEP 2
22732 SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SCAL#(1)/10)*II),8)
22733 SCAL$(2)=RIGHT$(SPACE$(8)+STR$((SCAL#(2)/10)*II),8)
22734 SYMBOL(X0-54,Y0-10+YP*II),SCAL$(1),.6!,.6!,5
22735 SYMBOL(X0-66,Y0+YP*II),SCAL$(2),.6!,.6!,7
22736 NEXT II
22738 MESH1$=MESH$(13)
22739 MESH2$=MESH$(3)
22740 FOR GDN=1 TO GDMAX
22750 YG=Y0+(GDT#(1,GDN)/SCAL#(1))*YP*10
22755 LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG),PSET,5,BF
22760 LINE(X0+XP*GDN-19,Y0+2)-(X0+XP*GDN-7,YG+2),PSET,0,BF,MESH1$
22765 YG=Y0+(GDT#(2,GDN)/SCAL#(2))*YP*10
22770 X1=X0+XP*(GDN-1)- 6:Y1=YG+4
22771 X2=X0+XP*(GDN )- 6:Y2=YG+4
22772 X3=X0+XP*(GDN )-12:Y3=YG+8
22773 X4=X0+XP*(GDN-1)-12:Y4=YG+8
22774 CONNECT(X1,Y1)-(X2,Y2)-(X3,Y3)-(X4,Y4)-(X1,Y1),7,PSET,F,MESH2$
22775 LINE(X2,Y2)-(X2,Y0+4),PSET,7
22776 LINE(X3,Y3)-(X3,Y0+8),PSET,7
22777 LINE(X4,Y4)-(X4,Y0+8),PSET,7
22780 NEXT GDN
22790 LINE(216,92)-(364,108),PSET,7,BF
22900 SYMBOL(222,94),"総合計:\"+STR$(TGDT#),1,.8!,0,,,&H01
22970 GOSUB *画面フラッシュ
22980 RETURN
22990 '
23000 *AN03:'//////////////////// [日別項目別変動]
23010 X0=52:Y0=262:XP=3:YP=-10:YO=128
23011 DATA 100000,100000,100000, 10000, 10000
23012 DATA 2000, 10000, 20000, 10000, 10000
23013 DATA 10000, 10000, 10000, 10000, 50000
23015 RESTORE 23011:FOR II=2 TO SITM:READ SCAL#(1):NEXT II
23020 FOR II=0 TO 1:Y0X=Y0+YO*II
23022 LINE(X0,Y0X)-(X0+XP*31*6,Y0X),PSET,5
23024 LINE(X0,Y0X)-(X0,Y0X+YP*10),PSET,5
23030 FOR JJ=1 TO 10
23032 LINE(X0,Y0+YO*II+YP*JJ)-(X0+XP*31*6,Y0+YO*II+YP*JJ),PSET,5,,&HAAAA
23034 NEXT JJ
23040 FOR JJ=0 TO 31*6 STEP 31
23041 LINE(X0+XP*JJ,Y0X)-(X0+XP*JJ,Y0X+YP*10),PSET,5
23042 LINE(X0+XP*(JJ+10),Y0X)-(X0+XP*(JJ+10),Y0X+YP*10),PSET,5,,&HAAAA
23043 LINE(X0+XP*(JJ+20),Y0X)-(X0+XP*(JJ+20),Y0X+YP*10),PSET,5,,&HAAAA
23045 NEXT JJ
23050 FOR JJ=0 TO 10 STEP 2
23052 SCAL$=RIGHT$(SPACE$(8)+STR$((SCAL#(1)/10)*JJ),8)
23054 SYMBOL(X0-42,Y0X+YP*JJ-6),SCAL$,.6!,.6!,7
23056 NEXT JJ
23058 NEXT II
23060 LINE(217,92)-(308,108),PSET,7,BF
23061 LINE(310,92)-(614,108),PSET,7,BF
23062 'SYMBOL(222,94),"\ 00000000 01234567890123456789012345678901",1,.8!,0,,,&H01
23063 LINE(88,110)-(614,126),PSET,5,BF
23064 LINE(20,92)-(86,126),PSET,7,BF
23066 SYMBOL(96,112),"出来事:",.9!,.8!,0,,,&H01,4
23067 'SYMBOL(26,94 ),"1992.07",.9!,.8!,0,,,&H01,1
23068 'SYMBOL(26,112),"25[wed]",.9!,.8!,0,,,&H01,1
23100 '-------------------- データ読み込み
23105 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
23110 FOR II=1 TO 366:GDYY=0:GDYM$="":NEXT II
23120 IYM$=YRS$+MNS$:GDN=1
23125 GOSUB *ITM変換
23130 GOSUB *HKISRC
23132 GDYM$=YRM$+"."+MNM$
23133 XS=X0+((GDN-1) MOD (31*6))*XP+8:YS=Y0+INT((GDN-1)/(31*6))*YO+4
23135 SYMBOL(XS,YS),GDYM$,1,.8!,6,,,&H01,1
23140 IF FIDX=0 THEN 23160
23141 FOR RDY=1 TO 31
23145 TCALF=0:GOSUB *HKDGET
23150 GDYY(GDN)=DYN#(GITM)
23151 GDYM$(GDN)=YRM$+MNM$+RIGHT$(STR$(100+RDY),2)+DRM$(GITM)
23152 GDYE$(GDN)=DEV$
23153 GOSUB *AN03グラフ作成
23156 GDN=GDN+1
23158 NEXT RDY
23160 GOSUB *分析年月日更新
23170 IF ANLCNT=0 THEN 23200
23180 GOTO 23130
23200 '-------------------- データ読み取り
23202 GOSUB *画面フラッシュ
23205 GDN=GDN-1:'TBS=1:GOSUB *AN03グラフ読み取り
23210 MESN=21:GOSUB *MESDSP:MESN=18:GOSUB *SNDMSG
23220 SWPASS=1:G=1:GOSUB *マウスボタン選択
23230 IF SWNO=5 THEN *AN03END
23240 IF TBS=0 THEN 23220
23242 IF TBS>GDN THEN 23220
23244 GOSUB *AN03グラフ読み取り
23246 GOTO 23220
23250 *AN03グラフ読み取り
23251 LINE(217,92)-(308,108),PSET,7,BF
23252 LINE(310,92)-(614,108),PSET,7,BF
23253 LINE(157,110)-(614,126),PSET,5,BF
23254 LINE(20,92)-(86,126),PSET,7,BF
23260 YRM$=MID$(GDYM$(TBS),1,4):YR=VAL(YRM$)
23261 MNM$=MID$(GDYM$(TBS),5,2):MN=VAL(MNM$)
23262 DYM$=MID$(GDYM$(TBS),7,2):DY=VAL(DYM$)
23263 RMM$=MID$(GDYM$(TBS),9,32):GOSUB *週分析E
23264 SYMBOL(26,96),YRM$+"."+MNM$,.9!,.8!,0,,,&H01,1
23265 SYMBOL(26,112),DYM$+"[ ]",.9!,.8!,0,,,&H01,1
23266 SYMBOL(50,112),WKM$,.9!,.8!,CW,,,&H01,1
23270 SYMBOL(222,94),"\"+STR$(GDYY(TBS)),1,.8!,0,,,&H01,1
23271 SYMBOL(316,94),RMM$,1,.8!,0,,,&H02
23272 SYMBOL(160,112),GDYE$(TBS),.9!,.8!,0
23290 RETURN
23300 *AN03グラフ作成
23305 SCALOV=0:SCALZR=0
23310 XG=X0+((GDN-1) MOD (31*6))*XP
23320 IF GDYY(GDN)>SCAL#(1) THEN SCALOV=1:GOTO 23326
23322 IF GDYY(GDN)=0 THEN SCALZR=1
23325 YG=Y0+INT((GDN-1)/(31*6))*YO+YP*(GDYY(GDN)/SCAL#(1))*10:GOTO 23330
23326 YG=Y0+INT((GDN-1)/(31*6))*YO+YP*10
23330 IF GDN=1 OR GDN=31*6+1 THEN 23341
23340 LINE(XGX+2,YGX)-(XGX+2,YG),PSET,4
23341 IF SCALZR=1 THEN 23343
23342 LINE(XG-1,YG-1)-(XG+1,YG+1),PSET,7,BF:GOTO 23345
23343 LINE(XG-1,YG)-(XG+1,YG),PSET,7,BF:GOTO 23350
23345 IF SCALOV=1 THEN LINE(XG+1,YG-2)-(XG-1,YG-1),PSET,2,B
23350 XGX=XG:YGX=YG
23360 RETURN
23400 *AN03END
23410 G=1:B=5:BST(G,B)=1:GOSUB *ボタンON_OFF表示
23420 G=1:B=5:BST(G,B)=0:GOSUB *ボタンON_OFF表示
23480 RETURN
23490 '
23500 *AN04:'//////////////////// [月間収支推移 ]
23510 X0=88:Y0=240:XP=20:YP=-12
23520 LINE(X0,Y0)-(X0+XP*26,Y0),PSET,5
23525 LINE(X0,Y0-YP*10)-(X0,Y0+YP*10),PSET,5
23530 FOR II=1 TO 24
23532 LINE(X0+XP*II,Y0-YP*10)-(X0+XP*II,Y0+YP*10),PSET,5,,&HCCCC
23534 NEXT II
23536 FOR II=-10 TO 10 STEP 1
23538 LINE(X0,Y0+YP*II)-(X0+XP*24,Y0+YP*II),PSET,5,,&HAAAA
23539 LINE(X0+XP*24.5!,Y0+YP*II)-(X0+XP*26,Y0+YP*II),PSET,5,,&HAAAA
23540 NEXT II
23550 SYMBOL(576,370),"TOTAL",.8!,.8!,5,,,&H01,1
23560 SYMBOL(22,124),"ヒ",1,1,5,,,&H01
23561 SYMBOL(24,150),"収",.8!,.8!,5,,,&H01
23562 SYMBOL(24,170),"入",.8!,.8!,5,,,&H01
23565 SYMBOL(24,300),"支",.8!,.8!,5,,,&H01
23566 SYMBOL(24,320),"出",.8!,.8!,5,,,&H01
23567 SYMBOL(22,346),"フ",1,1,5,,,&H01
23600 '-------------------- データ読み込み
23605 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
23610 SCN=3:GOSUB *グラフデータ初期化
23620 IYM$=YRS$+MNS$:GDN=1
23630 GOSUB *統計データ読みだし
23632 GDYM$=YRM$+"."+MNM$
23633 XS=X0+XP*(GDN-1)-16:YS=Y0-YP*10+((GDN-1) MOD 3)*12+10
23635 SYMBOL(XS,YS),GDYM$,.6!,.6!,7,,,,1
23640 IF FIDX=0 THEN 23660
23650 GDT#(1,GDN)=MX#(16)
23651 GDT#(2,GDN)=MX#(17)
23655 GDT#(3,GDN)=MX#(16)-MX#(17)
23656 TGDT#=TGDT#+GDT#(3,GDN)
23660 GOSUB *分析年月日更新
23670 IF ANLCNT=0 THEN 23700
23680 GDN=GDN+1:GOTO 23630
23700 '-------------------- グラフ作成
23710 GDMAX=GDN
23720 GOSUB *スケール検出
23725 GOSUB *スケール検出2
23730 FOR II=-10 TO 10 STEP 2
23732 SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SMAXW#/10)*II),8)
23735 SYMBOL(X0-46,Y0+YP*II-3),SCAL$(1),.6!,.6!,7
23736 NEXT II
23737 MESH1$=MESH$(10)
23738 MESH2$=MESH$(14)
23739 MESH3$=MESH$(15)
23745 FOR GDN=1 TO GDMAX
23750 YG1=Y0+(GDT#(1,GDN)/SMAXW#)*YP*10
23751 YG2=Y0-(GDT#(2,GDN)/SMAXW#)*YP*10
23752 YG3=Y0+(GDT#(3,GDN)/SMAXW#)*YP*10
23755 LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG1),PSET,0,BF,MESH1$
23756 LINE(X0+XP*GDN-15,Y0)-(X0+XP*GDN-4,YG2),PSET,0,BF,MESH2$
23758 LINE(X0+XP*GDN-XP,Y0)-(X0+XP*GDN ,YG3),PSET,7,BF,MESH3$
23760 NEXT GDN
23770 YG=Y0+(TGDT#/SMAXW#)*YP*10
23772 LINE(X0+XP*26-XP-6,Y0)-(X0+XP*26-4,YG),PSET,7,BF,MESH3$
23800 LINE(430,96)-(620,112),PSET,7,BF
23810 IF TGDT#>=0 THEN 23815
23812 TGDT$=RIGHT$(SPACE$(8)+STR$(ABS(TGDT#)),8)+"-":GOTO 23820
23815 TGDT$=RIGHT$(SPACE$(8)+STR$(ABS(TGDT#)),8)+"+"
23820 SYMBOL(434,98),"収支合計: \"+TGDT$,1,.8!,0,,,&H01,1
23970 GOSUB *画面フラッシュ
23980 RETURN
23990 '
24000 *AN05:'//////////////////// [月間日累積推移]
24010 X0=88:Y0=392:XP=12:YP=-25
24020 LINE(X0,Y0)-(X0+XP*32,Y0),PSET,5
24022 LINE(X0,Y0)-(X0,Y0+YP*10),PSET,5
24030 FOR II=1 TO 31
24031 LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*10),PSET,5,,&HCCCC
24032 IF (II MOD 5)<>0 AND II<>1 THEN 24034
24033 SYMBOL(X0+XP*II-8,Y0+4),RIGHT$(STR$(100+II),2),1,.8!,6,,,&H01
24034 NEXT II
24035 FOR II=1 TO 10
24036 LINE(X0,Y0+YP*II)-(X0+XP*32,Y0+YP*II),PSET,5,,&HAAAA
24037 NEXT II
24050 SYMBOL(464,395),"[日]",1,.8!,5,,,&H01
24060 SYMBOL(50,119),"[\]",1,.8!,5,,,&H01
24100 '-------------------- データ読み込み
24105 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
24110 SCN=6:GOSUB *グラフデータ初期化
24120 IYM$=YRS$+MNS$:GDN=1
24125 GOSUB *ITM変換
24130 GOSUB *HKISRC
24132 GOSUB *AN05年月表示
24140 IF FIDX=0 THEN 24160
24141 FOR RDY=1 TO 31
24145 GOSUB *HKDGET
24151 GDT#(GDN,RDY)=GDT#(GDN,RDY-1)+DYN#(GITM)
24158 NEXT RDY
24160 GOSUB *分析年月日更新
24170 IF ANLCNT=0 THEN 24200
24180 GDN=GDN+1:GOTO 24130
24200 '-------------------- グラフ作成
24210 GDMAX=GDN
24220 GOSUB *スケール検出
24225 GOSUB *スケール検出2
24230 FOR II=0 TO 10
24232 SCAL$(1)=RIGHT$(SPACE$(8)+STR$((SMAXW#/10)*II),8)
24235 SYMBOL(X0-46,Y0+YP*II-3),SCAL$(1),.6!,.6!,7
24236 NEXT II
24240 FOR GDN=1 TO GDMAX
24250 FOR RDY=1 TO 31
24252 X=X0+XP*RDY:Y=Y0+(GDT#(GDN,RDY)/SMAXW#)*YP*10
24260 IF RDY=1 THEN 24264
24262 LINE(XM,YM)-(X,Y),PSET,GDN
24264 LINE(X-1,Y-1)-(X+1,Y+1),PSET,GDN,BF
24266 XM=X:YM=Y
24270 NEXT RDY
24280 NEXT GDN
24285 GOSUB *画面フラッシュ
24290 RETURN
24295 '
24350 *AN05年月表示
24355 XS0=534:YS0=142:XSP=112:YSP=16
24360 GDYM$=YRM$+"."+MNM$
24365 XS=XS0:YS=YS0+(GDN-1)*YSP
24370 SYMBOL(XS,YS),GDYM$,1,.8!,7,,,&H01,1
24375 LINE(XS-30,YS+4)-(XS- 8,YS+4),PSET,GDN
24376 LINE(XS-31,YS+3)-(XS-29,YS+5),PSET,GDN,BF
24377 LINE(XS- 9,YS+3)-(XS- 7,YS+5),PSET,GDN,BF
24380 RETURN
24490 '
24500 *AN06:'//////////////////// [項目別比率分析]
24510 X0=18:Y0=96:XP=90:YP=16
24520 LOAD@ TIFDRV$+"\HK4AN06.TIF",(X0-4,Y0-4)
24522 FOR II=1 TO 15:X=38
24523 IF II<4 THEN Y=114+16*(II-1):GOTO 24526
24524 Y=114+16*II
24526 SYMBOL(X,Y),CFI$(II),.8!,.8!,0,,,,2
24528 NEXT II
24570 GOSUB *AN06項目表示
24600 '-------------------- データ読み込み
24605 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
24610 SCN=1:GOSUB *グラフデータ初期化
24620 IYM$=YRS$+MNS$
24630 GOSUB *統計データ読みだし
24632 GDYM$=YRM$+"."+MNM$
24633 LOCATE 48,23:COLOR 4
24635 PRINT "Access File:";GDYM$;
24640 IF FIDX=0 THEN 24660
24650 FOR GDN=1 TO 18
24651 GDT#(1,GDN)=GDT#(1,GDN)+MX#(GDN)
24655 NEXT GDN
24660 GOSUB *分析年月日更新
24670 IF ANLCNT=0 THEN 24700
24680 GOTO 24630
24700 '-------------------- グラフ作成
24710 XC0=465:YC0=297:RC=120:XG0=345:YG0=128:XGP=240:YGP=32
24720 FOR GDN=1 TO 15
24722 IF GDN>3 THEN TGDT#=GDT#(1,17) ELSE TGDT#=GDT#(1,16)
24724 IF GDN>3 THEN YS=Y0+YP*(GDN+1) ELSE YS=Y0+YP*GDN
24726 GDTC=0:GDAC=&H00:GOSUB *AN06数値表示
24728 NEXT GDN
24730 TGDT#=GDT#(1,16):YS=Y0+YP*4:GDN=16
24731 GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
24732 TGDT#=GDT#(1,17):YS=Y0+YP*18:GDN=17
24733 GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
24734 TGDT#=GDT#(1,17):YS=Y0+YP*17:GDN=18
24735 GDTC=1:GDAC=&H01:GOSUB *AN06数値表示
24736 GDT#(1,19)=GDT#(1,16)-GDT#(1,17)
24737 GDT1$="\"+RIGHT$(SPACE$(9)+STR$(GDT#(1,19)),9)
24738 YS=Y0+YP*(19)
24739 SYMBOL(X0+XP*1+8,YS+3),GDT1$,1,.8!,0,,,&H01
24740 XM=XG0
24741 LINE(XG0+6,YG0+6)-(XG0+XGP+6,YG0+YGP+6),PSET,0,BF,MESH$(18)
24742 LINE(XG0,YG0)-(XG0+XGP,YG0+YGP),PSET,7,B
24743 FOR GDN=1 TO 3:IF GDT#(1,16)=0 THEN 24747
24744 XG=XM+GDT#(1,GDN)/GDT#(1,16)*XGP
24746 LINE(XM,YG0)-(XG,YG0+YGP),PSET,0,BF,MESH$(IMSH(GDN))
24747 XM=XG
24748 NEXT GDN
24750 LINE(XG0,YG0-2)-(XG0+XGP,YG0-2),PSET,5
24751 LINE(XG0,YG0-5)-(XG0,YG0-2),PSET,5
24752 LINE(XG0+XGP*.5!,YG0-5)-(XG0+XGP*.5!,YG0-2),PSET,5
24753 LINE(XG0+XGP,YG0-5)-(XG0+XGP,YG0-2),PSET,5
24754 SCAL$="0"+SPACE$(18)+"50"+SPACE$(17)+"100 [%]"
24755 SYMBOL(XG0-3,YG0-15),SCAL$,.8!,.6!,5
24758 SYMBOL(430,YG0-33),"収入比率",1,1,7,,,&H01+&H02
24760 RGM=.75!
24761 CIRCLE(XC0+6,YC0+6),RC,0,,,,F,PSET,MESH$(18)
24762 CIRCLE(XC0,YC0),RC,7
24763 FOR GDN=4 TO 15
24764 IF GDT#(1,GDN)=0 OR GDT#(1,17)=0 THEN 24769
24765 RGX=RGM+GDT#(1,GDN)/GDT#(1,17)
24766 IF RGX>=1 THEN RGX=RGX-1
24768 CIRCLE(XC0,YC0),RC,0,,RGM,RGX,F,PSET,MESH$(IMSH(GDN))
24769 RGM=RGX
24770 NEXT GDN
24775 CIRCLE(XC0,YC0),40,0,,,,F,PSET,7
24778 SYMBOL(430,289),"支出比率",1,1,0,,,&H01+&H02
24830 GOSUB *画面フラッシュ
24840 RETURN
24845 '
24850 *AN06項目表示
24852 DATA 1,5,7,2,1,7,6,3,4,5,8,9,10,11,12
24855 RESTORE 24852
24860 FOR II=1 TO 15:READ IMSH(II)
24880 NEXT II
24890 RETURN
24900 *AN06数値表示
24902 GDT1$="\ "+RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
24903 IF TGDT#=0 THEN GDT2$="計算不能":GOTO 24916
24904 TGDP#=GDT#(1,GDN)/TGDT#
24906 GOSUB *小数点表示変換
24916 SYMBOL(X0+XP*1+8,YS+3),GDT1$,1,.8!,GDTC,,,GDAC
24918 SYMBOL(X0+XP*2+10,YS+3),GDT2$,1,.8!,GDTC,,,GDAC
24920 RETURN
24990 '
25000 *AN07:'//////////////////// [エンゲル係数推移 ]
25010 X0=18:Y0=96:XP=72:YP=16
25020 LINE(X0-4,Y0-4)-(X0+XP*6+4,Y0+YP*20+4),PSET,7,BF
25022 LINE(X0,Y0)-(X0+XP*6,Y0+YP*20),PSET,0,B
25023 LINE(X0-1,Y0-1)-(X0+XP*6+1,Y0+YP*20+1),PSET,0,B
25030 FOR II=1 TO 19:LINE(X0,Y0+YP*II)-(X0+XP*6,Y0+YP*II),PSET,0:NEXT II
25031 PAINT (X0+1,Y0+1),MESH$(5),0
25032 PAINT (X0+1,Y0+YP*19+1),MESH$(11),0
25040 FOR II=1 TO 5:LINE(X0+XP*II,Y0)-(X0+XP*II,Y0+YP*20),PSET,0:NEXT II
25043 DATA " 年.月","支出計[A]","基支出[B]","食 費[C]"," B/A"," C/A"
25044 RESTORE 25043:FOR II=0 TO 5 :READ ITM$
25045 SYMBOL(X0+XP*II+4,Y0+2),ITM$,.8!,.8!,0,,,&H01,1
25046 NEXT II
25047 SYMBOL(36,402),"合 計",.8!,.8!,0,,,&H01,1
25048 LINE(X0+XP*5-24,Y0)-(X0+XP*5,Y0+YP),PSET,0,BF,MESH$(9)
25049 LINE(X0+XP*6-24,Y0)-(X0+XP*6,Y0+YP),PSET,0,BF,MESH$(14)
25050 XG0=462:YG0=112:XGP=16:YGP=16
25052 LINE(XG0,YG0)-(XG0+XGP*10,YG0),PSET,5
25053 LINE(XG0,YG0)-(XG0,YG0+YGP*19+4),PSET,5
25054 LINE(XG0,YG0+YGP*18)-(XG0+XGP*10,YG0+YGP*19+4),PSET,5,BF
25060 FOR II=1 TO 10
25061 LINE(XG0+XGP*II,YG0)-(XG0+XGP*II,YG0+YGP*19+4),PSET,5,,&HAAAA
25062 NEXT II
25063 FOR II=1 TO 19
25064 LINE(XG0,YG0+YGP*II)-(XG0+XGP*10,YG0+YGP*II),PSET,5,,&HCCCC
25065 NEXT II
25066 SYMBOL(460,100),"0 50 100",.8!,.6!,5
25100 '-------------------- データ読み込み
25105 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
25110 SCN=3:GOSUB *グラフデータ初期化
25115 FOR II=1 TO 3:TGDT#(II)=0:NEXT II
25120 IYM$=YRS$+MNS$:GDN=1
25130 GOSUB *統計データ読みだし
25132 GDYM$=YRM$+"."+MNM$
25133 XS=X0+4:YS=Y0+YP*GDN+2
25135 SYMBOL(XS,YS),GDYM$,1,.8!,0,,,&H01,1
25140 IF FIDX=0 THEN 25160
25150 GDT#(1,GDN)=MX#(17):GDT#(1,19)=GDT#(1,19)+MX#(17):'92.10.11
25151 GDT#(2,GDN)=MX#(18):GDT#(2,19)=GDT#(2,19)+MX#(18)
25155 GDT#(3,GDN)=MX#(4) :GDT#(3,19)=GDT#(3,19)+MX#(4)
25160 GOSUB *分析年月日更新
25170 IF ANLCNT=0 THEN 25200
25180 GDN=GDN+1:GOTO 25130
25200 '-------------------- グラフ作成
25210 GDMAX=GDN
25220 FOR GDN=1 TO GDMAX
25230 GOSUB *AN07グラフ作成
25240 NEXT GDN
25250 GDN=19:GOSUB *AN07グラフ作成
25260 GOSUB *画面フラッシュ
25270 RETURN
25280 '
25300 *AN07グラフ作成
25312 GDT$(1)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
25314 GDT$(2)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(2,GDN)),8)
25316 GDT$(3)="\"+RIGHT$(SPACE$(8)+STR$(GDT#(3,GDN)),8)
25320 IF GDT#(1,GDN)=0 THEN GDT$(4)="計算不能":GOTO 25326
25322 TGDP#=GDT#(2,GDN)/GDT#(1,GDN):X1OV=0
25323 IF TGDP#<=1 THEN X1=XG0+TGDP#*XGP*10 ELSE X1=XG0+XGP*10:X1OV=1
25324 GOSUB *小数点表示変換:GDT$(4)=GDT2$
25326 IF GDT#(1,GDN)=0 THEN GDT$(5)="計算不能":GOTO 25340
25328 TGDP#=GDT#(3,GDN)/GDT#(1,GDN):X2OV=0
25329 IF TGDP#<=1 THEN X2=XG0+TGDP#*XGP*10 ELSE X2=XG0+XGP*10:X2OV=1
25330 GOSUB *小数点表示変換:GDT$(5)=GDT2$
25340 FOR II=1 TO 5
25342 SYMBOL(X0+XP*II+4,Y0+YP*GDN+2),GDT$(II),.9!,.8!,0
25344 NEXT II
25345 IF GDT$(4)="計算不能" THEN 25360
25350 Y=YG0+YGP*(GDN-1)
25352 LINE(XG0,Y+2)-(X1,Y+10),PSET,0,BF,MESH$(9)
25353 IF X1OV=1 THEN LINE(X1,Y+2)-(X1-1,Y+10),PSET,2,BF
25354 LINE(XG0,Y+6)-(X2,Y+14),PSET,0,BF,MESH$(14)
25355 IF X2OV=1 THEN LINE(X2,Y+6)-(X2-1,Y+14),PSET,2,BF
25360 RETURN
25370 '
25490 '
25500 '*AN08:'//////////////////// [年別動向比較 ]
25990 '
26000 *AN08:'//////////////////// [月間レポート印刷 ]
26010 X0=14:Y0=92:YP=16
26020 LINE(X0,Y0)-(X0+608,Y0+YP*21-5),PSET,7,BF
26022 FOR II=0 TO 20
26024 CIRCLE(X0+8,Y0+YP*II+8),4,0,,,,F
26026 CIRCLE(X0+600,Y0+YP*II+8),4,0,,,,F
26028 NEXT II
26100 '-------------------- データ読み込み
26105 MESN=17:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
26120 IYM$=YRS$+MNS$:LOCATE 0,5:COLOR 0:CR$=CHR$(&H0D,&H0A)
26125 SCN=2:GOSUB *グラフデータ初期化
26130 GOSUB *HKISRC
26132 GDYM$=YRM$+"."+MNM$
26135 PR1$="月間家計簿リスト 《"+YRM$+"年"+MNM$+"月》"
26136 PR2$="家計簿System Ver.4.0 "+DATE$+" "+TIME$
26140 COLOR 0:PRINT SPACE$(4)+PR1$+SPACE$(2)+PR2$:PRINT
26142 GOSUB *LAJ2:LPRINT PR1$+SPACE$(6)+PR2$+CR$
26148 '
26150 PR$="【出来事】"
26151 COLOR 0:PRINT SPACE$(4)+PR$+STRING$(60,"-"):PRINT
26152 GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
26155 FOR RDY=1 TO 31
26160 GOSUB *HKDGET:GOSUB *AN08分析
26165 YR=YRM:MN=MNM:DY=RDY:GOSUB *週分析
26166 IF RDY>MNDN THEN PRINT:LPRINT:GOTO 26190
26170 PR$=RIGHT$(STR$(100+RDY),2)+"("+WKM$+") "+DEV$
26180 PRINT SPACE$(4)+PR$:GOSUB *LAJ:LPRINT PR$
26190 NEXT RDY
26198 '
26200 PRINT:LPRINT
26210 PR$="【収 入】"
26211 COLOR 0:PRINT SPACE$(4)+PR$+STRING$(60,"-"):PRINT
26212 GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
26220 GOSUB *統計データ読みだし
26230 PR$=" 項目 合計金額 1日平均 最高額 比 率 日数"
26231 PRX$=" 項目 合計金額 1日平均 最高額 比 率 日数"
26232 COLOR 0:PRINT SPACE$(4)+PRX$
26234 GOSUB *LAJ2:LPRINT PR$
26240 FOR GDN=1 TO 3
26242 GOSUB *AN08項目印刷
26244 NEXT GDN:PRINT:LPRINT
26246 PR1$=RIGHT$(SPACE$(8)+STR$(MX#(16)),8)
26248 PR2#=INT(MX#(16)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
26250 PR$="合 計"+" "+PR1$+" "+PR2$
26252 COLOR 0:PRINT SPACE$(4)+PR$
26254 GOSUB *LAJ2:LPRINT PR$
26258 '
26260 PRINT:LPRINT
26270 PR$="【支 出】"
26271 COLOR 0:PRINT SPACE$(4)+PR$+STRING$(60,"-"):PRINT
26272 GOSUB *LAJ2:LPRINT PR$+STRING$(63,"-")+CR$
26280 PR$=" 項目 合計金額 1日平均 最高額 比 率 日数"
26281 PRX$=" 項目 合計金額 1日平均 最高額 比 率 日数"
26282 COLOR 0:PRINT SPACE$(4)+PRX$
26284 GOSUB *LAJ2:LPRINT PR$
26290 FOR GDN=4 TO 15
26292 GOSUB *AN08項目印刷
26294 NEXT GDN:PRINT:LPRINT
26300 GDN=18:ITEMX$=ITEM$(18+1):ITEM$(18+1)="基支出"
26302 GOSUB *AN08項目印刷
26304 ITEM$(18+1)=ITEMX$
26310 PR1$=RIGHT$(SPACE$(8)+STR$(MX#(17)),8)
26312 PR2#=INT(MX#(17)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
26314 PR$="合 計"+" "+PR1$+" "+PR2$
26316 COLOR 0:PRINT SPACE$(4)+PR$
26318 GOSUB *LAJ2:LPRINT PR$
26320 '
26330 FOR II=5 TO 22:COLOR 0:PRINT SPACE$(78);:NEXT II
26340 SYMBOL(268,222),"印刷終了",1,1,0,,,&H01+&H02,2
26350 GOSUB *画面フラッシュ
26360 RETURN
26380 '
26400 *AN08分析
26410 FOR GDN=1 TO 18
26412 IF DYN#(GDN)<>0 THEN GDT#(2,GDN)=GDT#(2,GDN)+1
26414 IF DYN#(GDN)>GDT#(1,GDN) THEN GDT#(1,GDN)=DYN#(GDN)
26416 NEXT GDN
26420 RETURN
26430 *AN08項目印刷
26432 PR1$=RIGHT$(SPACE$(8)+STR$(MX#(GDN)),8)
26434 PR2#=INT(MX#(GDN)/MNDN):PR2$=RIGHT$(SPACE$(8)+STR$(PR2#),8)
26436 PR3$=RIGHT$(SPACE$(8)+STR$(GDT#(1,GDN)),8)
26438 TGDP#=MX#(GDN)/MX#(16):GOSUB *小数点表示変換:PR4$=GDT2$
26440 PR5$=RIGHT$(STR$(GDT#(2,GDN)),2)
26442 PR$=ITEM$(GDN+1)+" "+PR1$+" "+PR2$+" "+PR3$+" "+PR4$+" "+PR5$
26444 COLOR 0:PRINT SPACE$(4)+PR$
26446 GOSUB *LAJ2:LPRINT PR$
26448 RETURN
26490 '
26500 *AN09:'//////////////////// [総計演算処理 ]
26505 GOSUB *分析結果画面消去
26510 MESN=20:GOSUB *MESDSP:MESN=15:GOSUB *SNDMSG
26520 GOSUB *HKIOPN:CLOSE
26530 RI=1 :GOSUB *HKIGET:SX$(1)=YRM$:SX$(2)=MNM$
26540 RI=IR:GOSUB *HKIGET:SX$(3)=YRM$:SX$(4)=MNM$
26550 GOSUB *分析条件表示
26590 LOCATE 0,5
26600 FOR LOOP=1 TO IR
26610 RI=LOOP:GOSUB *HKIGET
26620 COLOR 7
26630 PRINT " ";YRM$;"年";MNM$;"月 家計簿ファイル --- ";
26650 IF RIGHT$(IMAK$,1)<>" " THEN 26710
26660 COLOR 6:PRINT "処理中 !! ";
26670 GOSUB *HKTCAL
26680 RMN=MNM:GOSUB *HKTPUT
26685 MID$(IMAK$,32,1)="*":GOSUB *HKIPUT
26690 LOCATE POS(0)-10,CSRLIN:COLOR 4:PRINT "処理終了 "
26700 GOTO 26720
26710 PRINT "処理済 "
26720 NEXT LOOP
26730 GOSUB *分析結果画面消去
26980 RETURN
26990 '
27000 *AN10:'//////////////////// [
27500 *AN11:'//////////////////// [
28000 *AN12:'//////////////////// [
28500 *AN13:'//////////////////// [
29000 *AN14:'//////////////////// [
29500 *AN15:'//////////////////// [
29990 '
30000 *分析条件合理性判定
30020 YRS$=RIGHT$(STR$(10000+YRS),4)
30030 MNS$=RIGHT$(STR$(100+MNS),2):IYM$=YRS$+MNS$:GOSUB *HKISRC
30040 IF FIDX=0 THEN MESN=15:GOSUB *VALERR :GOTO 30160:'NG
30050 IF SMOPT(SMODE,2)=0 THEN 30110:'?
30060 YRE$=RIGHT$(STR$(10000+YRE),4)
30070 MNE$=RIGHT$(STR$(100+MNE),2):IYM$=YRE$+MNE$:GOSUB *HKISRC
30080 IF FIDX=0 THEN MESN=16:GOSUB *VALERR :GOTO 30160:'NG
30090 IF (YRS*12+MNS)<=(YRE*12+MNE) THEN 30102:'?
30100 MESN=7 :GOSUB *VALERR :GOTO 30160:'NG
30102 IF (YRE*12+MNE)-(YRS*12+MNS)<=SMOPT(SMODE,2)-1 THEN 30110:'?
30103 ASMES$="★★分析期間範囲:"+STR$(SMOPT(SMODE,2))+"か月以内"
30104 MESN=8 :GOSUB *VALERR:GOTO 30160:'NG
30110 IF SMOPT(SMODE,3)=0 THEN 30150:'OK
30120 IF SITM=1 THEN MESN=10:GOSUB *VALERR :GOTO 30160:'NG
30121 IF SITM=20 THEN MESN=10:GOSUB *VALERR :GOTO 30160:'NG
30125 IF SITM=0 THEN MESN=11:GOSUB *VALERR :GOTO 30160:'NG
30130 IF SMOPT(SMODE,3)=1 THEN 30150:'OK
30140 IF SITM>16 THEN MESN=10:GOSUB *VALERR :GOTO 30160:'NG
30150 ANLCDF=1:RETURN:'Good !!
30160 ANLCDF=0:RETURN:'No Good!
30170 *VALERR
30175 GOSUB *MESDSP:MESN=25:GOSUB *SNDMSG
30176 LOCATE 50,23:COLOR 7:PRINT ASMES$;
30180 FOR II=1 TO 10000:NEXT II
30185 MESN=3:GOSUB *MESDSP:ASMES$=""
30190 RETURN
30195 '
30200 *スケール検出
30210 FOR II=1 TO SCN:SMAX#(II)=0:NEXT II
30220 FOR II=1 TO SCN:FOR JJ=1 TO 31
30230 IF ABS(GDT#(II,JJ))>SMAX#(II) THEN SMAX#(II)=ABS(GDT#(II,JJ))
30240 NEXT JJ:NEXT II
30250 DATA 1000, 1500, 2000, 2500, 5000, 7500
30260 DATA 10000, 15000, 20000, 25000, 50000, 75000
30270 DATA 100000, 150000, 200000, 250000, 500000, 750000
30280 DATA 1000000, 1500000, 2000000, 2500000, 5000000, 7500000
30290 DATA 10000000,15000000,20000000,25000000,50000000,75000000
30300 FOR II=1 TO SCN
30305 RESTORE 30250
30310 FOR JJ=1 TO 30:READ SCAL#(II)
30320 IF SCAL#(II)>SMAX#(II) THEN JJ=31:GOTO 30330
30330 NEXT JJ:NEXT II
30340 RETURN
30395 '
30400 *グラフデータ初期化
30410 FOR II=1 TO SCN:FOR JJ=0 TO 31
30420 GDT#(II,JJ)=0
30430 NEXT JJ:NEXT II:TGDT#=0
30440 RETURN
30450 *ITM変換
30460 GITM=SITM-1
30470 IF SITM=19 THEN GITM=17
30480 IF SITM=18 THEN GITM=18
30490 RETURN
30495 '
30500 *統計データ読みだし
30510 GOSUB *HKISRC
30520 IF FIDX=0 THEN 30580
30530 IF RIGHT$(IMAK$,1)<>" " THEN 30570
30540 GOSUB *HKTCAL
30550 RMN=MNM:GOSUB *HKTPUT
30560 MID$(IMAK$,32,1)="*":GOSUB *HKIPUT
30570 RMN=MNM:GOSUB *HKTGET
30580 RETURN
30590 '
30600 *スケール検出2
30610 SMAXW#=0
30620 FOR II=1 TO SCN
30630 IF SCAL#(II)<SMAXW# THEN 30650
30640 SMAXN=II:SMAXW#=SCAL#(II)
30650 NEXT II
30660 RETURN
30670 '
30700 *シート選択判定
30710 X0=52:Y0=262:XP=3:YP=-10:YO=128
30720 IF X_M<X0-1 OR X_M>X0+XP*31*6-1 THEN 30770
30730 IF Y_M<Y0+YP*10 OR Y_M>Y0+YO THEN 30770
30735 IF Y_M>Y0 AND Y_M<Y0+YO+YP*10 THEN 30770
30740 IF Y_M>Y0 THEN YOFF=1 ELSE YOFF=0
30750 TBS=INT((X_M-(X0-1))/XP)+1+YOFF*31*6
30760 PLAY "O6L16EC":RETURN
30770 TBS=0:PLAY "O7L16CE":RETURN
30780 '
30800 *画面フラッシュ
30810 FOR II=1 TO 5
30820 PALETTE 13,[255,160,200]
30825 ' PALETTE 8,[160,240,250]
30830 FOR JJ=1 TO 500:NEXT JJ
30840 PALETTE 13,[160,160,200]
30845 ' PALETTE 8,[ 64, 64, 64]
30850 FOR JJ=1 TO 300:NEXT JJ
30860 NEXT II
30870 RETURN
30880 '
30900 *小数点表示変換
30910 GDT21=INT(TGDP#*100)
30920 GDT22$=RIGHT$(STR$(INT(10000+(TGDP#*100-GDT21)*1000)),3)
30930 GDT21$=STR$(GDT21)+"."
30940 GDT2$=RIGHT$(SPACE$(5)+GDT21$+GDT22$+" %",9)
30950 RETURN
30960 '
31000 *LAJ :'////////// 漢字文字ピッチ縮小
31010 LPRINT SPACE$(3)+CHR$(&H1C);"$";CHR$(&H22,&H76);
31020 RETURN
31040 *LAJ2 :'////////// 漢字文字ピッチ縮小2
31050 LPRINT SPACE$(3)+CHR$(&H1C);"$";CHR$(&H23,&H72);
31060 RETURN
31070 '
36000 *メッシュデータ定義
36005 '//////// [1]青
36010 MESH$(1)=CHR$(&H99,&H99,&H99,&H99)
36015 '//////// [2]赤
36020 MESH$(2)=CHR$(&HAA,&HAA,&HAA,&HAA)
36025 '//////// [3]ピンク
36030 MESH$(3)=CHR$(&HBB,&HBB,&HBB,&HBB)
36035 '//////// [4]緑
36040 MESH$(4)=CHR$(&HCC,&HCC,&HCC,&HCC)
36045 '//////// [5]青グレー
36050 MESH$(5)=CHR$(&HDD,&HDD,&HDD,&HDD)
36055 '//////// [6]黄色
36060 MESH$(6)=CHR$(&HEE,&HEE,&HEE,&HEE)
36065 '//////// [7]うす青
36070 MESH$(7)=CHR$(&H9F,&H9F,&H9F,&H9F,&HF9,&HF9,&HF9,&HF9)
36075 '//////// [8]うす赤
36080 MESH$(8)=CHR$(&HAF,&HAF,&HAF,&HAF,&HFA,&HFA,&HFA,&HFA)
36085 '//////// [9]うすピンク
36090 MESH$(9)=CHR$(&HBF,&HBF,&HBF,&HBF,&HFB,&HFB,&HFB,&HFB)
36095 '//////// [10]うす緑
36100 MESH$(10)=CHR$(&HCF,&HCF,&HCF,&HCF,&HFC,&HFC,&HFC,&HFC)
36105 '//////// [11]うす青グレー
36110 MESH$(11)=CHR$(&HDF,&HDF,&HDF,&HDF,&HFD,&HFD,&HFD,&HFD)
36115 '//////// [12]うす黄色
36120 MESH$(12)=CHR$(&HEF,&HEF,&HEF,&HEF,&HFE,&HFE,&HFE,&HFE)
36125 '//////// [13]オレンジ
36130 MESH$(13)=CHR$(&HAE,&HAE,&HAE,&HAE,&HEA,&HEA,&HEA,&HEA)
36135 '//////// [14]赤紫
36140 MESH$(14)=CHR$(&HAB,&HAB,&HAB,&HAB,&HBA,&HBA,&HBA,&HBA)
36145 '//////// [15]しろ斜線青
36150 MESH$(15)=CHR$(&HF9,&H99,&HF9,&H99,&H99,&H9F,&H99,&H9F,&H99,&HF9,&H99,&HF9,&H9F,&H99,&H9F,&H99)
36155 '//////// [16]しろグレー
36160 MESH$(16)=CHR$(&H77,&H77,&H77,&H77)
36165 '//////// [17]明るいしろグレー
36170 MESH$(17)=CHR$(&H7F,&H7F,&H7F,&H7F,&HF7,&HF7,&HF7,&HF7)
36175 '//////// [18]暗いしろグレー
36180 MESH$(18)=CHR$(&H70,&H70,&H70,&H70,&H07,&H07,&H07,&H07)
36190 RETURN
36195 '
36990 '
37000 *分析モード読み取り
37005 RESTORE *分析モード項目:READ MODEN
37010 FOR SMODE=1 TO MODEN
37015 READ SMODE$(SMODE)
37020 FOR II=1 TO 3:READ SMOPT(SMODE,II):NEXT II
37025 NEXT SMODE
37030 SMODE=1
37035 RESTORE *項目データ
37040 FOR II=1 TO 20
37045 READ ITEM$(II),ITEMC(II)
37046 IF II>1 AND II<17 THEN ITEM$(II)=CFI$(II-1)
37050 NEXT II
37055 RETURN
37060 '
37065 *ボタン座標読み取り
37070 RESTORE *ボタン座標:READ SWGN
37075 FOR G=1 TO SWGN
37080 READ SWN(G),SMX(G),SMY(G),SMW(G)
37085 FOR B=1 TO SWN(G)
37090 READ XB1(G,B),XB2(G,B),YB1(G,B),YB2(G,B)
37095 NEXT B
37100 NEXT G
37105 RETURN
37110 '
37115 *ボタンON_OFF表示
37120 IF BST(G,B)=1 THEN BSC=7:BSB=0:BSA=2:GOTO 37130
37125 BSC=0:BSB=7:BSA=5
37130 CONNECT(XB1(G,B ),YB2(G,B) )-(XB2(G,B) ,YB2(G,B) )-(XB2(G,B ),YB1(G,B) ),BSC,PSET
37135 CONNECT(XB1(G,B)+1,YB2(G,B)-1)-(XB2(G,B)-1,YB2(G,B)-1)-(XB2(G,B)-1,YB1(G,B)+1),BSC,PSET
37140 CONNECT(XB1(G,B) ,YB2(G,B) )-(XB1(G,B) ,YB1(G,B) )-(XB2(G,B) ,YB1(G,B) ),BSB,PSET
37145 CONNECT(XB1(G,B)+1,YB2(G,B)-1)-(XB1(G,B)+1,YB1(G,B)+1)-(XB2(G,B)-1,YB1(G,B)+1),BSB,PSET
37150 LINE(XB1(G,B)+4,YB1(G,B)+4)-(XB1(G,B)+6,YB1(G,B)+5),PSET,BSA,BF
37152 IF BST(G,B)=1 THEN SMSGPLAY 0:WAIT 8
37155 RETURN
37160 '
37165 *マウスボタン選択
37170 SWERC=0
37175 IF MOUSE(2,0)=0 THEN 37175
37180 X_M=MOUSE(4,0):Y_M=MOUSE(5,0):SWNO=0
37185 FOR IMS=1 TO SWN(G)
37190 IF (X_M>XB1(G,IMS) AND X_M<XB2(G,IMS)) ELSE 37205
37195 IF (Y_M>YB1(G,IMS) AND Y_M<YB2(G,IMS)) ELSE 37205
37200 SWNO=IMS:IMS=SWN(G)+1
37205 NEXT IMS:FOR IM=1 TO 500:NEXT IM
37210 IF SWNO=0 AND SWPASS=1 THEN GOSUB *シート選択判定:GOTO 37230
37215 IF SWNO=0 AND SWERC>5 THEN MESN=12:GOSUB *SNDMSG :GOTO 37175
37220 IF SWNO=0 THEN SMSGPLAY 3:SWERC=SWERC+1:GOTO 37175
37230 SWPASS=0
37235 RETURN
37240 '
37245 *数字漢字変換
37250 NBK$=""
37255 FOR INBK=1 TO NBN
37260 NBAX$=MID$(NBA$,INBK,1)
37265 IF NBAX$=" " THEN NBK$=NBK$+" ":GOTO 37275
37270 NBK$=NBK$+KNJ$(&H2330+VAL(NBAX$))
37275 NEXT INBK
37280 RETURN
37285 '
37290 '
37305 '
37310 *FADEOUT:CLS 1:CONSOLE 0,24,0
37315 FOR II=0 TO 15
37320 PALETTE II,[16*II,16*II,16*II]
37325 NEXT II
37330 FOR II=0 TO 255 STEP 5
37335 FOR JJ=0 TO 15:KK=16*JJ+II*(255-16*JJ)/255
37340 PALETTE JJ,[KK,KK,KK]
37345 NEXT JJ
37350 NEXT II
37355 RETURN
37360 '
37365 *確認
37370 LOCATE 27,3:PRINT SPACE$(52)
37375 GET@A(214,50)-(630,79),CUTN#
37380 LOAD@ TIFDRV$+"\CAUTION.TIF",(214,50)
37382 PLAY "o6l4ce"
37385 FOR II=1 TO 4
37390 LOCATE 40,3:COLOR 6:PRINT CMES$;:'28chr
37395 WAIT SWAIT/10
37400 LOCATE 40,3:PRINT SPACE$(28)
37405 WAIT SWAIT/10
37410 NEXT II
37415 LOCATE 40,3:COLOR 7:PRINT CMES$;:MESN=19:GOSUB *SNDMSG:'28chr
37420 G=3:GOSUB *マウスボタン選択
37425 G=3:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
37430 LOCATE 40,3:PRINT SPACE$(28)
37435 WAIT SWAIT/5
37440 PUT@A(214,50)-(630,79),CUTN#
37445 RETURN
37450 '
37500 *HKIOPN:'---------- インデックスファイルオープン
37510 DRV$=LEFT$(DATDRV$,2)
37520 IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 37540
37530 PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
37540 FLN$=DRV$+"(38)"+PATH$+"\HLIDX.DAT"
37550 OPEN "R",#2,FLN$
37560 FIELD #2,6 AS I$(1),32 AS I$(2)
37570 IR=LOF(2)
37580 RETURN
37590 '
37600 *HKDOPN:'---------- 家計簿データファイルオープン
37610 DRV$=LEFT$(DATDRV$,2)
37620 IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 37640
37630 PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
37640 FLN$=DRV$+"(768)"+PATH$+"\HL"+IYM$+".DAT"
37650 OPEN "R",#1,FLN$
37660 FIELD #1,64 AS D$(1),10*16 AS D$(2),32*4 AS D$(3),32*4 AS D$(4),32*4 AS D$(5),32*4 AS D$(6),32 AS D$(7)
37670 AR=LOF(1)
37680 RETURN
37690 '
37700 *ANLSOPN:'---------- 分析条件ファイルオープン
37710 DRV$=LEFT$(PRGDRV$,2)
37720 IF LEN(PRGDRV$)=3 THEN DRV$=LEFT$(PRGDRV$,2):PATH$="":GOTO 37740
37730 PATH$=RIGHT$(PRGDRV$,LEN(PRGDRV$)-2)
37740 FLN$=DRV$+"(54)"+PATH$+"\ANLS.DAT"
37750 OPEN "R",#1,FLN$
37760 FIELD #1,4 AS S$(1),2 AS S$(2),4 AS S$(3),2 AS S$(4),24 AS S$(5),8 AS S$(6),8 AS S$(7),2 AS S$(8)
37770 RETURN
37780 '
37790 *HKTOPN:'---------- 年間統計ファイルオープン
37800 DRV$=LEFT$(DATDRV$,2)
37810 IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 37830
37820 PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
37830 FLN$=DRV$+"(200)"+PATH$+"\HL"+LEFT$(IYM$,4)+"AL.DAT"
37840 OPEN "R",#1,FLN$
37850 FIELD #1,10*20 AS M$
37860 RETURN
37870 '
37880 *HKISRC:'---------- インデックスファイル検索
37890 FIDX=0
37900 GOSUB *HKIOPN
37910 FOR R=1 TO IR
37920 GET #2,R
37930 IF IYM$<>I$(1) THEN 37950
37940 IYM$=I$(1):IMAK$=I$(2):RI=R:R=IR+1:FIDX=1
37950 NEXT R:IF FIDX=0 THEN 37980
37960 GET #2,RI
37965 YRM$=LEFT$(I$(1),4):MNM$=RIGHT$(I$(1),2)
37970 YRM=VAL(YRM$):MNM=VAL(MNM$)
37980 CLOSE #2
37990 RETURN
38000 '
38010 *HKIPUT:'---------- インデックスファイル書き込み
38020 GOSUB *HKIOPN
38030 LSET I$(1)=IYM$
38040 LSET I$(2)=IMAK$
38050 PUT #2,RI
38060 CLOSE #2
38070 RETURN
38080 '
38090 *HKDGET:'---------- 家計簿データ読み込み
38100 GOSUB *HKDOPN
38110 R=RDY
38120 GET #1,R
38130 DEV$=D$(1)
38140 FOR II=1 TO 16:DYN$(II )=MID$(D$(2),(II-1)*10+1,10):NEXT II
38150 FOR II=1 TO 4:DRM$(II+ 0)=MID$(D$(3),(II-1)*32+1,32):NEXT II
38160 FOR II=1 TO 4:DRM$(II+ 4)=MID$(D$(4),(II-1)*32+1,32):NEXT II
38170 FOR II=1 TO 4:DRM$(II+ 8)=MID$(D$(5),(II-1)*32+1,32):NEXT II
38180 FOR II=1 TO 4:DRM$(II+12)=MID$(D$(6),(II-1)*32+1,32):NEXT II
38190 DDM$=D$(7)
38200 GOSUB *HKDCAL
38210 CLOSE #1
38220 RETURN
38230 '
38240 *HKDCAL:'---------- 家計簿金額計算
38250 FOR II=1 TO 15:DYN#(II)=VAL(DYN$(II)):NEXT II
38255 IF TCALF=1 THEN TCALF=0:RETURN
38260 DYN#(16)=0:FOR II=1 TO 3 :DYN#(16)=DYN#(16)+DYN#(II):NEXT II
38270 DYN$(16)=RIGHT$(SPACE$(8)+STR$(DYN#(16)),8)
38280 DYN#(18)=0:FOR II=4 TO 7 :DYN#(18)=DYN#(18)+DYN#(II):NEXT II
38290 DYN$(18)=RIGHT$(SPACE$(8)+STR$(DYN#(18)),8)
38300 DYN#(17)=0:FOR II=4 TO 15:DYN#(17)=DYN#(17)+DYN#(II):NEXT II
38310 DYN$(17)=RIGHT$(SPACE$(8)+STR$(DYN#(17)),8)
38320 RETURN
38330 '
38340 *ANLSGET:'---------- 分析条件ファイル読み込み
38350 GOSUB *ANLSOPN
38360 GET #1,1
38370 FOR II=1 TO 8:SX$(II)=S$(II):NEXT II
38380 CLOSE #1
38390 SR1YR=VAL(SX$(1)):SR1MN=VAL(SX$(2))
38400 SR2YR=VAL(SX$(3)):SR2MN=VAL(SX$(4))
38410 RETURN
38420 '
38430 *ANLSPUT:'---------- 分析条件ファイル書き込み
38440 GOSUB *ANLSOPN
38450 FOR II=1 TO 8:LSET S$(II)=SX$(II):NEXT II
38460 PUT #1,1
38470 CLOSE #1
38480 RETURN
38490 '
38500 *HKTGET:'---------- 年間統計ファイル読み込み
38510 GOSUB *HKTOPN
38520 R=RMN
38530 GET #1,R
38540 FOR II=1 TO 20
38550 MX$(II)=MID$(M$,(II-1)*10+1,10)
38560 MX#(II)=VAL(MX$(II))
38570 NEXT II
38580 CLOSE #1
38590 RETURN
38600 '
38610 *HKTPUT:'---------- 年間統計ファイル書き込み
38620 GOSUB *HKTOPN
38630 R=RMN:MX$=SPACE$(200)
38640 FOR II=1 TO 20
38650 MX$(II)=RIGHT$(SPACE$(10)+STR$(MX#(II)),10)
38660 MID$(MX$,(II-1)*10+1,10)=MX$(II)
38670 LSET M$=MX$
38680 NEXT II
38690 PUT #1,R
38700 CLOSE #1
38710 RETURN
38720 '
38730 *HKTCAL:'---------- 年間統計ファイル演算
38735 LXX=POS(0):LYX=CSRLIN
38740 FOR II=1 TO 20:MX#(II)=0:NEXT II
38750 FOR RDY=1 TO 31
38755 LOCATE 60,23:COLOR 4
38756 PRINT YRM$;".";MNM$;".";RIGHT$(" "+STR$(RDY),2);" 演算中";
38760 GOSUB *HKDGET
38770 FOR II=1 TO 18
38780 MX#(II)=MX#(II)+DYN#(II)
38790 NEXT II
38800 NEXT RDY
38810 CLOSE:LOCATE 60,23:COLOR 7:PRINT SPACE$(19);
38820 LOCATE LXX,LYX:RETURN
38830 '
38840 *HKIGET:'---------- インデックスデータ読みだし
38850 GOSUB *HKIOPN
38860 GET #2,RI
38870 IYM$=I$(1):IMAK$=I$(2)
38880 YRM$=LEFT$(I$(1),4):MNM$=RIGHT$(I$(1),2)
38890 YRM=VAL(YRM$):MNM=VAL(MNM$)
38900 CLOSE #2
38910 RETURN
38920 '
39000 *CONFIGファイルチェック' V10 1993.02.07
39010 OPEN "R",#1,"(1)HK.CFG"
39020 FIELD #1,1 AS D$
39030 IF LOF(1)=0 THEN *CFGFE1
39035 CLOSE
39040 OPEN "I",#1,"HK.CFG"
39050 GOSUB *CFGREAD:PRGDRV$=CFG$:'-- PRGDRV$
39052 GOSUB *CFGREAD:DATDRV$=CFG$:'-- DATDRV$
39054 GOSUB *CFGREAD:RAMDRV$=CFG$:'-- RAMDRV$
39056 TIFDRV$=PRGDRV$+"\TIFF" :'-- TIFDRV$
39058 GOSUB *CFGREAD:FMBDRV$=CFG$:'-- FMBDRV$
39060 GOSUB *CFGREAD :'-- SNDMF
39062 IF LEFT$(CFG$,5)<>"SNDMF" THEN *CFGFE2
39064 SNDMF=VAL(RIGHT$(CFG$,1))
39066 GOSUB *CFGREAD:SNDDRV$=CFG$:'-- SNDDRV$
39068 GOSUB *CFGREAD :'-- SWAIT
39070 IF LEFT$(CFG$,4)<>"WAIT" THEN *CFGFE2
39072 SWAIT=VAL(RIGHT$(CFG$,LEN(CFG$)-5))
39080 FOR II=1 TO 15
39082 GOSUB *CFGREAD:CFI$(II)=CFG$
39084 NEXT II
39140 CLOSE
39150 RETURN
39200 *CFGFE1
39220 LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルが見当たりません。 家計簿を終了します。"
39230 CLOSE:WAIT 100:SYSTEM
39300 *CFGFE2
39320 LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルの内容に誤りがあります。 家計簿を終了します。"
39330 CLOSE:WAIT 100:SYSTEM
39400 *CFGFE3
39420 LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルの項目に不足があります。 家計簿を終了します。"
39430 CLOSE:WAIT 100:SYSTEM
39500 *CFGREAD
39510 IF EOF(1)<>0 THEN *CFGFE3
39520 LINE INPUT #1,CFG$
39530 IF LEFT$(CFG$,1)="/" THEN 39510
39540 RETURN
39990 '
40000 *ボタン座標:'-------------------------------------------------------
40010 DATA 3 'SWGN スイッチグループ数
40090 '/////////////////////////////
40100 '-------------------- [G1] メインスイッチグループ
40110 ' SWN(G),SMX,SMY,SMW
40120 DATA 6 ,0.5,0.6, 1
40130 ' XB1 XB2 YB1 YB2
40140 DATA 216,239, 56, 73 '"▲"---------- 1
40150 DATA 240,263, 56, 73 '"▼"---------- 2
40160 DATA 264,309, 56, 73 '"SELECT"------ 3
40170 DATA 552,591, 42, 79 '"実行"-------- 4
40180 DATA 592,630, 42, 79 '"取消"-------- 5
40210 DATA 592,630, 3, 41 '"END"--------- 6
40220 '-------------------- [G2] 分析メニュースイッチグループ
40230 ' SWN(G),SMX,SMY,SMW
40240 DATA 30 ,0.5,0.6, 0
40250 ' XB1 XB2 YB1 YB2
40260 DATA 466,509,131,159 '"決定"-------- 1
40270 DATA 510,551,131,159 '"取消"-------- 2
40280 DATA 380,399,171,187 '"▲"---------- 3
40290 DATA 400,419,171,187 '"▼"---------- 4
40300 DATA 483,502,171,187 '"▲"---------- 5
40310 DATA 503,522,171,187 '"▼"---------- 6
40320 DATA 380,399,209,225 '"▲"---------- 7
40330 DATA 400,419,209,225 '"▼"---------- 8
40340 DATA 483,502,209,225 '"▲"---------- 9
40350 DATA 503,522,209,225 '"▼"----------10
40390 '
40400 DATA 494,539,301,317 ',"出来事",0---11
40405 DATA 310,355,247,263 ',"給 与",0---12
40410 DATA 310,355,264,280 ',"臨 時",0---13
40420 DATA 310,355,281,297 ',"他収入",0---14
40430 DATA 356,401,247,263 ',"食 費",1---15
40440 DATA 356,401,264,280 ',"生活費",1---16
40450 DATA 356,401,281,297 ',"洗濯代",1---17
40460 DATA 402,447,247,263 ',"光熱費",1---18
40470 DATA 402,447,264,280 ',"被服費",0---19
40480 DATA 402,447,281,297 ',"交際費",0---20
40490 DATA 448,493,247,263 ',"娯楽費",0---21
40500 DATA 448,493,264,280 ',"酒 代",0---22
40510 DATA 448,493,281,297 ',"車維持",0---23
40520 DATA 494,539,247,263 ',"教育費",0---24
40530 DATA 494,539,264,280 ',"雑 費",0---25
40540 DATA 494,539,281,297 ',"他支出",0---26
40550 DATA 310,355,301,317 ',"全収入",2---27
40560 DATA 356,401,301,317 ',"基支出",1---28
40570 DATA 402,447,301,317 ',"全支出",2---29
40580 DATA 448,493,301,317 ',"全収支",2---30
40600 '-------------------- [G3] 確認スイッチグループ
40610 ' SWN(G),SMX,SMY,SMW
40620 DATA 2 ,0.8,0.8, 0
40630 ' XB1 XB2 YB1 YB2
40640 DATA 552,583, 56, 73 '"OK"---------- 1
40650 DATA 584,615, 56, 73 '"NG"---------- 2
40690 '
40750 '
50000 *分析モード項目
50010 DATA 9 '10
50015 ' " 分析モード ",開始,終了,項目
50016 ' SMOPT(SMODE, [1] [2] [3] ) 0:無効
50017 ' 1:全項目有効
50018 ' 2:合計項目無効
50020 DATA "月間合計額推移", 1, 24, 1
50030 DATA "月間合計額累積", 1, 24, 1
50040 DATA "日別項目別変動", 1, 12, 2
50050 DATA "月間収支推移 ", 1, 24, 0
50060 DATA "月間日累積推移", 1, 6, 1
50070 DATA "項目別比率分析", 1, 48, 0
50080 DATA "エンゲル係数推移 ", 1, 18, 0
50090 'DATA "年別動向比較 ", 1, 48, 1
50100 DATA "月間レポート印刷 ", 1, 0, 0
50110 DATA "総計演算処理 ", 0, 0, 0
50190 '
51300 *項目データ:' SITM
51400 DATA "出来事",0'----- 1
51410 DATA "給 与",4'----- 2
51420 DATA "臨 時",4'----- 3
51430 DATA "他収入",4'----- 4
51440 DATA "食 費",1'----- 5
51450 DATA "生活費",1'----- 6
51460 DATA "洗濯代",1'----- 7
51470 DATA "光熱費",1'----- 8
51480 DATA "被服費",1'----- 9
51490 DATA "交際費",1'-----10
51500 DATA "娯楽費",1'-----11
51510 DATA "酒 代",1'-----12
51520 DATA "車維持",1'-----13
51530 DATA "教育費",1'-----14
51540 DATA "雑 費",1'-----15
51550 DATA "他支出",2'-----16
51560 DATA "全収入",2'-----17
51570 DATA "基支出",2'-----18
51580 DATA "全支出",2'-----19
51590 DATA "全収支",2'-----20
60000 '
60010 ' 座標確認 DEBUG ROUTINE
60020 '
60030 MOUSE 0:MOUSE 1,0,0,1
60040 IF MOUSE(2,1)<>0 THEN STOP
60050 IF MOUSE(2,0)=0 THEN 60050
60060 X_M=MOUSE(4,0):Y_M=MOUSE(5,0):LX=INT(X_M/8):LY=INT(Y_M/19)
60070 LOCATE 2,24:COLOR 7:PRINT "X=";X_M,"Y=";Y_M,"LX=";LX,"LY=";LY;
60080 GOTO 60040
61000 '
61100 *分析条件TESTファイル作成
61110 DATDRV$="A:\"
61120 SX$(1)="1992"
61130 SX$(2)="01"
61140 SX$(3)="1992"
61150 SX$(4)="07"
61160 SX$(5)="012345678901234567890123"
61165 SX$(5)="0123456789小村利明890123"
61170 SX$(6)="00000000"
61180 SX$(7)="99999999"
61190 SX$(8)="01"
61200 GOSUB *ANLSPUT
61210 STOP
62000 LOCATE 2,6:COLOR 0'
62010 PRINT "1992.02.14(日) 給 与 00000000 ";STRING$(32,"A");
62100 LOCATE 2,7:COLOR 0
62110 PRINT "1992.02.14 ";STRING$(64,"A");
62120 STOP